lib/ruco/syntax_parser.rb in ruco-0.2.0.beta11 vs lib/ruco/syntax_parser.rb in ruco-0.2.0.beta12
- old
+ new
@@ -4,30 +4,33 @@
TEXTPOW_CONVERT = {
'scss' => 'sass',
'html+erb' => 'html_rails',
}
+ def self.syntax_for_line(line, languages)
+ syntax_for_lines([line], languages).first
+ end
+ cmemoize :syntax_for_line
+
def self.syntax_for_lines(lines, languages)
if syntax = syntax_node(languages)
processor = syntax.parse(lines.join("\n"), Ruco::ArrayProcessor.new)
processor.lines
else
[]
end
end
def self.syntax_node(languages)
- @@syntax_node ||= {}
- @@syntax_node[languages] ||= begin
- found = nil
- fallbacks = languages.map{|l| TEXTPOW_CONVERT[l] }.compact
+ found = nil
+ fallbacks = languages.map{|l| TEXTPOW_CONVERT[l] }.compact
- (languages + fallbacks).detect do |language|
- syntax = File.join(Textpow.syntax_path, "#{language}.syntax")
- found = Textpow::SyntaxNode.load(syntax) if File.exist?(syntax)
- end
-
- found
+ (languages + fallbacks).detect do |language|
+ syntax = File.join(Textpow.syntax_path, "#{language}.syntax")
+ found = Textpow::SyntaxNode.load(syntax) if File.exist?(syntax)
end
+
+ found
end
+ cmemoize :syntax_node
end
end