class Syntaxer::Writer
Constants
- EXCLUDE_PROPERTIES
Recreate config DSL string operation general rules and set of languages
Public Class Methods
new(langs, rules)
click to toggle source
Initializing Writer
@param [Array] array of languages to recreate @param [LanguageRules]
# File lib/syntaxer/writer.rb, line 12 def initialize langs, rules raise ArgumentError unless rules.kind_of?(LanguageRules) @config = '' @allowed_methods = ["syntaxer", "lang", "languages"] @config = syntaxer do lang_st = '' langs.each do |l| language = l.first @paths = l.last rule = rules.find(language) next if rule.nil? @allowed_methods += rule.members if (rule.members - @allowed_methods).length > 0 lang_st += languages(rule.send(:name)) do prop_st = '' rule.members.each do |m| properties = rule.send(m) prop_st += property(m, properties) if m != "name" end prop_st end end lang_st end end
Public Instance Methods
get_config()
click to toggle source
return config
@return [String] DSL config string
# File lib/syntaxer/writer.rb, line 43 def get_config @config end
Protected Instance Methods
block(name, param = nil) { |self| ... }
click to toggle source
Create DSL block
@param [Symbol, String] block name @param [String] parameter that is passed in to block @return [String] DSL block string
# File lib/syntaxer/writer.rb, line 63 def block name, param = nil, &b sp = ' '*2 if name == :lang || name == :languages body = yield self if block_given? param = ":#{param.to_s}" unless param.nil? "#{sp}#{name.to_s} #{param} do\n#{body}\n#{sp}end\n" end
method_missing(name, *args, &b)
click to toggle source
Calls superclass method
# File lib/syntaxer/writer.rb, line 48 def method_missing name, *args, &b name = name.to_sym super unless @allowed_methods.include?(name.to_s) if name == :lang || name == :syntaxer || name == :languages block(name, args.first, &b) else property(name, args) end end
property(name, prop)
click to toggle source
Create DSL property of block
@param [String] name of the property @param [Syntaxer::Runner, Array] properties @return [String] DSL property string
# File lib/syntaxer/writer.rb, line 75 def property name, prop return '' if EXCLUDE_PROPERTIES.include?(name.to_s) || prop.nil? || (prop.kind_of?(Array) && prop.empty?) prop = prop.flatten.map{|p| "'#{p}'"}.join(', ') if prop.respond_to?(:flatten) && name.to_sym != :folders prop = @paths.map{|f| "'#{f}'"}.join(',') if name.to_sym == :folders prop = "'#{prop.exec_rule}'" if prop.instance_of?(Syntaxer::Runner) && !prop.exec_rule.nil? prop = "Syntaxer::Runner.#{prop.language}" if prop.instance_of?(Syntaxer::Runner) && prop.exec_rule.nil? ' '*4 + "#{name.to_s} #{prop}\n" end