Redcloth gem에는 아래의 방법이 있습니다.Ruby에서이 구성의 의미는 무엇입니까?
제 질문은 "to (RedCloth :: Formatters :: HTML)"의 의미는 무엇입니까? "to"는 클래스의 메소드도 아니고 수퍼 클래스 (String 클래스)입니다.
건배. 신자.
def to_html(*rules)
apply_rules(rules)
to(RedCloth::Formatters::HTML)
end
Redcloth gem에는 아래의 방법이 있습니다.Ruby에서이 구성의 의미는 무엇입니까?
제 질문은 "to (RedCloth :: Formatters :: HTML)"의 의미는 무엇입니까? "to"는 클래스의 메소드도 아니고 수퍼 클래스 (String 클래스)입니다.
건배. 신자.
def to_html(*rules)
apply_rules(rules)
to(RedCloth::Formatters::HTML)
end
이 파일의 라인 (220)에 정의 된 것.
여기에는 두 가지 일이 있습니다. 먼저이 파일은 Ragel으로 사전 처리됩니다. 그러나이 질문에 대해서는이 사실을 무시하고 그 파일의 이상한 구문을 읽어야합니다. 루비 비트에 중점을 둡니다.
둘째, 클래스 RedCloth::TextileDoc
은 reopend입니다. 즉,이 파일의 클래스와 lib/redcloth/textile_doc.rb
이 같은 것을 의미합니다. 따라서 to
인스턴스 메소드는 인용 한 코드 부분에서 사용할 수 있습니다.
Object 또는 Kernel 모듈에 정의 될 수 있습니다.
편집 : 그렇지 않습니다. 그것은 당신이 def to
에 대한 전체 RedCloth 소스를 검색 할 때, to
로 시작하는 방법 몇 가지를 찾는 외에, 당신은 또한 ext/redcloth_scan/redcloth_scan.rb.rl
에 정확한 방법 to
을 찾을 수 있습니다 http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl
예, 단지 C를 #됐다 메소드를 호출하고 redcloth_to으로 (포맷터 클래스 번째 인수를 전달한다 (221)
to(RedCloth::Formatters::HTML)
에서 클래스 라인 200 http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl에서 정의하고 붙어 첫 번째 값은 항상 self
이어야합니다.