module WLang class EncoderSet # Defines encoders of the plain-text dialect module PlainText # Default encoders DEFAULT_ENCODERS = {"upcase" => :upcase, "downcase" => :downcase, "capitalize" => :capitalize, "camel" => :camel_case, "camel-case" => :camel_case, "upper-camel" => :camel_case, "lower-camel" => :lower_camel_case} # Upcase encoding def self.upcase(src, options); src.upcase; end # Downcase encoding def self.downcase(src, options); src.downcase; end # Capitalize encoding def self.capitalize(src, options); src.capitalize; end # Converts a string as CamelCase def self.camel_case(src, options) src.gsub!(/[^a-zA-Z\s]/," ") src = " " + src.split.join(" ") src.gsub!(/ (.)/) { $1.upcase } end # Converts a string to lower camelCase def self.lower_camel_case(src, options) camel_case(src, options).gsub(/^([A-Z])/){ $1.downcase } end end # module PlainText end class RuleSet # Defines rulset of the plain-text dialect module PlainText # Default mapping between tag symbols and methods DEFAULT_RULESET = {'+' => :upcase, '-' => :downcase} # Upcase rule as +{wlang/hosted} def self.upcase(parser, offset) expression, reached = parser.parse(offset, "wlang/ruby") value = parser.evaluate(expression) value = value.nil? ? "" : value.to_s result = WLang::EncoderSet::PlainText.upcase(value) [result, reached] end # Downcase rule as -{wlang/hosted} def self.downcase(parser, offset) expression, reached = parser.parse(offset, "wlang/ruby") value = parser.evaluate(expression) value = value.nil? ? "" : value.to_s result = EncoderSet::PlainText.downcase(value) [result, reached] end end # module PlainText end end