walk_site

[ urlparser, lodash, co, cheerio, request ] = [
  (require 'url'),(require 'lodash'),(require 'co'),(require 'cheerio'),(require 'qpromisify/request')
]

fetch_all_site_urls = (site) ->
  results = []
  input = [site]
  while input.length > 0
    unless (url = input.pop()) in results
      dom = cheerio.load((yield request.get(url)).body)
      dom("a").each((index,element) ->
        newurl = lodash.trim(dom(element).attr('href'),'/')
        if newurl? and newurl.toString().substr(0,site.length) == site
          input.push(newurl)
      )  
      results.push(url)

walk_site = (site,dom_callback) ->
  results = []
  input = [site]
  while input.length > 0
    unless (url = input.pop()) in results
      dom = cheerio.load((yield request.get(url)).body)
      dom("a").each((index,element) ->
        newurl = lodash.trim(dom(element).attr('href'),'/')
        input.push(newurl) if newurl.toString().substr(0,site.length) == site
      )  
      results.push(url)
      dom_callback(dom)

co ->
  yield walk_site(
    "http://nih.gov",
    (dom) ->
      console.log dom("h1[itemprop=name]").text()
  )
.catch (err) ->
  console.log err
"so" library extension stands for "shared object"
 

Известный адвокат написал завещание, в котором оставлял все свое состояние дуракам и сумасшедшим: "От них я его получил, им и возвращаю".
 

— Представьте, что вы подходите к вратам рая, и там вас встречает Господь. Что вы ему скажете?

— Я думаю, я бы сказал: «Рак костей у детей? Это как вообще? Как тебе не стыдно? Как ты смел создать мир, где есть такие страдания, в которых мы не виноваты? Это неправильно! Это чистое, чистейшее зло. Почему я должен уважать капризного, злобного и глупого Бога, создающего мир, в котором так много несправедливости и боли?» Вот что я бы сказал.

— И вы думаете, вас бы пустили после этого?

— Нет! Но я бы и сам не пошел. Я не хотел бы попасть туда на его условиях. Они неправильные. Вот если бы я умер, а там Плутон, Аид, двенадцать греческих богов, мне бы это было ближе. Потому что греческие боги не притворялись, что не похожи на людей в своих желаниях, в своих капризах и в своей нецелесообразности. Они не притворялись всевидящими, всезнающими, благотворными, добрыми. Потому что Бог, который создал эту вселенную — если ее создал Бог — очевидно, маньяк. Абсолютный маньяк. Невероятно эгоистичный, невероятно… А мы должны всю жизнь на коленях проводить, благодарить его? Какой бы Бог так себя вел? Да, мир прекрасен. Но в нем также есть такие насекомые, жизненный цикл которых состоит в том, чтобы забраться маленьким детям в глаза, ослепить их. Они их глаза выедают! Это как? Зачем? Зачем так с нами обращаться? Можно ведь было создать мир, в котором этого нет. Это просто неприемлемо.

Так что, понимаете, атеизм — это не только и не столько вера в то, в что Бога нет, а размышление над вопросом: даже если он существует, что это за Бог такой? Абсолютно очевидно, что он монстр, абсолютный монстр, который не заслуживает никакого уважения. И в тот момент, когда от него отказываешься, твоя жизнь становится проще, чище, яснее. И, как мне кажется, такая жизнь большего стоит.
 

Ххх: Ну почему ты не хочешь смотреть Игру Престолов? Она же крутая, ты что, не веришь?
Ууу: Я не смотрю фильмы длиннее трёх серий.
Ххх: Ну тогда книжки хоть прочти, там их и десяти не наберётся.
Ууу: Я не читаю книги длиннее трёх томов. Война и мир у меня была в двух книгах - обманом впарили...
Ххх: Что за нафиг? Ты дал зарок, как Вассерман?
Ууу: Я просто не верю, что человек, которому действительно есть, что сказать, не может выразить это связно и коротко. А если кто-то сам не знает, чего хочет, я не хочу тратить на него своё время.
 
Negative default:
if /^y|yes$/i.test(yield prompt 'Set up FTP credentials? [y/N] ')
Positive default:
if /^$|y|yes$/i.test(yield prompt 'Set up FTP credentials? [n/Y] ')
[ ]
 

It's okay if I don't have any friends. Having friends makes you happy but it doesn't make you a good person. You know who was really popular? Hitler.
 

Верующие жаждут бессмертия так, словно уверены в райском блаженстве; и в то же время боятся смерти, словно уверены, что попадут в ад.
 
colors = require 'colors'
events = require 'events'
niggershit = require 'app-cron-implementer'
test = (check_result,description) ->
  console.log(
    if check_result then "PASSED".green else "FAILED".red,
    description
  )

#
# A class: no prototype
#

A = 
(

  -> 
    __class = (-> 
      __args = Array.prototype.slice.call(arguments)
      if @ instanceof __class
        __class.prototype.constructor?.apply(@,__args) if __class isnt __class.prototype.constructor;@
      else 
        new (Function.prototype.bind.apply(__class,[null].concat(__args)))
    );
    __class.prototype = if typeof @prototype is 'function' then Object.create(@prototype.prototype) else if @prototype? then @prototype else @;
    __class.prototype[__prop] = @[__prop] for __prop of @ unless __class.prototype is @;
    __class

).apply(

  A_obj =

    constructor: (@param1,@param2) ->
      console.log "constructorA"
    renderA: ->
      console.log "renderA"
      return [@]

)

#
# B class: prototype is a function
#

B = 
(

  -> 
    __class = (-> 
      __args = Array.prototype.slice.call(arguments)
      if @ instanceof __class
        __class.prototype.constructor?.apply(@,__args) if __class isnt __class.prototype.constructor;@
      else 
        new (Function.prototype.bind.apply(__class,[null].concat(__args)))
    );
    __class.prototype = if typeof @prototype is 'function' then Object.create(@prototype.prototype) else if @prototype? then @prototype else @;
    __class.prototype[__prop] = @[__prop] for __prop of @ unless __class.prototype is @;
    __class

).apply(

  B_obj =
    prototype: A
    renderB: ->
      console.log "renderB"
      return [@]

)

#
# C class: prototype is another function
#

C = 
(

  -> 
    __class = (-> 
      __args = Array.prototype.slice.call(arguments)
      if @ instanceof __class
        __class.prototype.constructor?.apply(@,__args) if __class isnt __class.prototype.constructor;@
      else 
        new (Function.prototype.bind.apply(__class,[null].concat(__args)))
    );
    __class.prototype = if typeof @prototype is 'function' then Object.create(@prototype.prototype) else if @prototype? then @prototype else @;
    __class.prototype[__prop] = @[__prop] for __prop of @ unless __class.prototype is @;
    __class

).apply(

  C_obj =
    prototype: events.EventEmitter
    renderC: ->
      console.log "renderC"
      return [@]

)

D = (-> __class = (-> __args = Array.prototype.slice.call(arguments); if @ instanceof __class then (__class.prototype.constructor?.apply(@,__args) if __class isnt __class.prototype.constructor);@ else new (Function.prototype.bind.apply(__class,[null].concat(__args)))); (__class.prototype = if typeof @prototype is 'function' then Object.create(@prototype.prototype) else if @prototype? then @prototype else @); __class.prototype[__prop] = @[__prop] for __prop of @ unless __class.prototype is @; __class).apply

  prototype: A
  renderD: ->
    console.log "renderD"
    return [@]

E = 
(

  -> 
    __class = (-> 
      __args = Array.prototype.slice.call(arguments)
      if @ instanceof __class
        __class.prototype.constructor?.apply(@,__args) if __class isnt __class.prototype.constructor;@
      else 
        new (Function.prototype.bind.apply(__class,[null].concat(__args)))
    );
    __class.prototype = if typeof @prototype is 'function' then Object.create(@prototype.prototype) else if @prototype? then @prototype else @;
    __class.prototype[__prop] = @[__prop] for __prop of @ unless __class.prototype is @;
    __class

).apply(

  E_obj =
    prototype: A
    constructor: (@param1e,@param2e) ->
      @prototype(@param1e,@param2e)
      console.log "constructorE"
    renderE: ->
      console.log "renderE"
      return [@]

)

a = new A()
aa = new A("param1_val_A","param2_val_A")

b = new B()
bb = new B("param1_val_B","param2_val_B")

c = new C()

d = D()
dd = D("param1_val_D","param2_val_D")

ee = E("param1_val_E","param2_val_E")
console.log ee

test(
  typeof A.prototype.prototype is 'undefined',
  """A.prototype.prototype should be undefined"""
)
test(
  A.prototype is A_obj,
  """A.prototype should be the A_obj"""
)
test(
  typeof a.prototype == "undefined",
  """a.prototype should be undefined"""
)
test(
  !a.hasOwnProperty("constructor") and
  a.constructor is A_obj.constructor,
  """a.[[__proto__]] should be the A_obj"""
)

test(
  B.prototype isnt B_obj,
  """B.prototype shouldn't be the B_obj because B.prototype should be 
  created by Object.create function and all properties of the B_obj
  should be copied onto this new object"""
)
test(
  B.prototype.prototype is A,
  """B.prototype.prototype should be A"""
)
test(
  B.prototype.prototype.prototype is A_obj,
  """B.prototype.prototype.prototype should be A_obj"""
)
test(
  typeof B.prototype.prototype.prototype.prototype is 'undefined',
  """B.prototype.prototype.prototype.prototype should be undefined"""
)
test(
  bb.param1 is "param1_val_B",
  """B has no constructor and A constructor should've been executed instead"""
)
test(
  b.renderA?,
  """b should inherit A.renderA function"""
)
test(
  b.renderB?,
  """b should inherit B.renderB function"""
)

test(
  C.prototype.prototype is events.EventEmitter,
  """C.prototype.prototype should be events.EventEmitter"""
)

# Folded version should also work

###
test(
  D.prototype isnt D_obj,
  """D.prototype shouldn't be the D_obj because D.prototype should be 
  created by Object.create function and all properties of the D_obj
  should be copied onto this new object"""
)
###
test(
  D.prototype.prototype is A,
  """D.prototype.prototype should be A"""
)
test(
  D.prototype.prototype.prototype is A_obj,
  """D.prototype.prototype.prototype should be A_obj"""
)
test(
  typeof D.prototype.prototype.prototype.prototype is 'undefined',
  """D.prototype.prototype.prototype.prototype should be undefined"""
)
test(
  dd.param1 is "param1_val_D",
  """D has no constructor and A constructor should've been executed instead"""
)
test(
  d.renderA?,
  """D should inherit A.renderA function"""
)
test(
  d.renderD?,
  """d should inherit D.renderD function"""
)
[ ]
 

g()
{
  grep -Ri "$1" .
}
[ ]