wlang 0.10.2 → 2.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. data/CHANGELOG.md +3 -121
  2. data/Gemfile +23 -1
  3. data/Gemfile.lock +32 -28
  4. data/LICENCE.md +18 -21
  5. data/Manifest.txt +4 -5
  6. data/README.md +100 -174
  7. data/Rakefile +1 -13
  8. data/bin/wlang +3 -29
  9. data/lib/wlang.rb +21 -394
  10. data/lib/wlang/command.rb +94 -0
  11. data/lib/wlang/compiler.rb +78 -0
  12. data/lib/wlang/compiler/autospacing.rb +60 -0
  13. data/lib/wlang/compiler/dialect_enforcer.rb +91 -0
  14. data/lib/wlang/compiler/filter.rb +32 -0
  15. data/lib/wlang/compiler/grammar.citrus +67 -0
  16. data/lib/wlang/compiler/parser.rb +26 -0
  17. data/lib/wlang/compiler/proc_call_removal.rb +15 -0
  18. data/lib/wlang/compiler/static_merger.rb +28 -0
  19. data/lib/wlang/compiler/strconcat_flattener.rb +25 -0
  20. data/lib/wlang/compiler/to_ruby_abstraction.rb +22 -0
  21. data/lib/wlang/compiler/to_ruby_code.rb +55 -0
  22. data/lib/wlang/dialect.rb +40 -237
  23. data/lib/wlang/dialect/dispatching.rb +51 -0
  24. data/lib/wlang/dialect/evaluation.rb +30 -0
  25. data/lib/wlang/dialect/tags.rb +50 -0
  26. data/lib/wlang/dummy.rb +32 -0
  27. data/lib/wlang/html.rb +106 -0
  28. data/lib/wlang/loader.rb +6 -0
  29. data/lib/wlang/mustang.rb +90 -0
  30. data/lib/wlang/scope.rb +57 -0
  31. data/lib/wlang/scope/binding_scope.rb +18 -0
  32. data/lib/wlang/scope/object_scope.rb +25 -0
  33. data/lib/wlang/scope/proxy_scope.rb +18 -0
  34. data/lib/wlang/scope/root_scope.rb +24 -0
  35. data/lib/wlang/template.rb +16 -86
  36. data/lib/wlang/version.rb +9 -8
  37. data/spec/fixtures/dialect/foobar.rb +31 -0
  38. data/spec/fixtures/dialect/upcasing.rb +13 -0
  39. data/spec/fixtures/templates/hello.tpl +1 -0
  40. data/spec/integration/examples/1-basics.txt +65 -0
  41. data/spec/integration/examples/2-imperative.txt +51 -0
  42. data/spec/integration/examples/3-partials.txt +76 -0
  43. data/spec/integration/examples/4-recursion.txt +16 -0
  44. data/spec/integration/html/test_ampersand.rb +15 -0
  45. data/spec/integration/html/test_bang.rb +38 -0
  46. data/spec/integration/html/test_caret.rb +33 -0
  47. data/spec/integration/html/test_dollar.rb +16 -0
  48. data/spec/integration/html/test_greater.rb +23 -0
  49. data/spec/integration/html/test_modulo.rb +16 -0
  50. data/spec/integration/html/test_plus.rb +48 -0
  51. data/spec/integration/html/test_question.rb +33 -0
  52. data/spec/integration/html/test_sharp.rb +21 -0
  53. data/spec/integration/html/test_slash.rb +16 -0
  54. data/spec/integration/html/test_star.rb +37 -0
  55. data/spec/integration/test_dummy.rb +51 -0
  56. data/spec/integration/test_examples.rb +29 -0
  57. data/spec/integration/test_mustang.rb +120 -0
  58. data/spec/integration/test_readme.rb +56 -0
  59. data/spec/integration/test_upcasing.rb +22 -0
  60. data/spec/spec_helper.rb +62 -1
  61. data/spec/test_wlang.rb +101 -0
  62. data/spec/unit/compiler/autospacing/test_right_strip.rb +30 -0
  63. data/spec/unit/compiler/autospacing/test_unindent.rb +30 -0
  64. data/spec/unit/compiler/test_dialect_enforcer.rb +168 -0
  65. data/spec/unit/compiler/test_grammar.rb +207 -0
  66. data/spec/unit/compiler/test_parser.rb +69 -0
  67. data/spec/unit/compiler/test_proc_call_removal.rb +24 -0
  68. data/spec/unit/compiler/test_static_merger.rb +29 -0
  69. data/spec/unit/compiler/test_strconcat_flattener.rb +30 -0
  70. data/spec/unit/compiler/test_to_ruby_abstraction.rb +59 -0
  71. data/spec/unit/compiler/test_to_ruby_code.rb +24 -0
  72. data/spec/unit/dialect/test_compile.rb +52 -0
  73. data/spec/unit/dialect/test_dispatching.rb +19 -0
  74. data/spec/unit/dialect/test_evaluate.rb +41 -0
  75. data/spec/unit/dialect/test_render.rb +33 -0
  76. data/spec/unit/dialect/test_tags.rb +32 -0
  77. data/spec/unit/dialect/test_with_scope.rb +18 -0
  78. data/spec/unit/scope/test_binding_scope.rb +27 -0
  79. data/spec/unit/scope/test_coerce.rb +22 -0
  80. data/spec/unit/scope/test_object_scope.rb +38 -0
  81. data/spec/unit/scope/test_proxy_scope.rb +22 -0
  82. data/spec/unit/scope/test_root_scope.rb +22 -0
  83. data/spec/unit/test_assumptions.rb +29 -0
  84. data/spec/unit/test_scope.rb +57 -0
  85. data/tasks/debug_mail.rake +42 -45
  86. data/tasks/gem.rake +22 -17
  87. data/tasks/spec_test.rake +9 -17
  88. data/tasks/unit_test.rake +11 -12
  89. data/tasks/yard.rake +13 -13
  90. data/wlang.gemspec +36 -32
  91. data/wlang.noespec +27 -35
  92. metadata +268 -451
  93. data/doc/specification/about.rdoc +0 -61
  94. data/doc/specification/analytics.wtpl +0 -13
  95. data/doc/specification/dialect.wtpl +0 -14
  96. data/doc/specification/dialects.wtpl +0 -3
  97. data/doc/specification/examples.rb +0 -3
  98. data/doc/specification/glossary.wtpl +0 -14
  99. data/doc/specification/hosting.rdoc +0 -0
  100. data/doc/specification/overview.rdoc +0 -116
  101. data/doc/specification/rulesets.wtpl +0 -87
  102. data/doc/specification/specification.css +0 -53
  103. data/doc/specification/specification.html +0 -1690
  104. data/doc/specification/specification.js +0 -8
  105. data/doc/specification/specification.wtpl +0 -42
  106. data/doc/specification/specification.yml +0 -432
  107. data/doc/specification/symbols.wtpl +0 -16
  108. data/lib/wlang/dialect_dsl.rb +0 -141
  109. data/lib/wlang/dialect_loader.rb +0 -74
  110. data/lib/wlang/dialects/bluecloth_dialect.rb +0 -16
  111. data/lib/wlang/dialects/coderay_dialect.rb +0 -45
  112. data/lib/wlang/dialects/hosted_dialect.rb +0 -50
  113. data/lib/wlang/dialects/plain_text_dialect.rb +0 -69
  114. data/lib/wlang/dialects/rdoc_dialect.rb +0 -33
  115. data/lib/wlang/dialects/redcloth_dialect.rb +0 -16
  116. data/lib/wlang/dialects/ruby_dialect.rb +0 -118
  117. data/lib/wlang/dialects/sql_dialect.rb +0 -38
  118. data/lib/wlang/dialects/standard_dialects.rb +0 -181
  119. data/lib/wlang/dialects/xhtml_dialect.rb +0 -63
  120. data/lib/wlang/dialects/yaml_dialect.rb +0 -30
  121. data/lib/wlang/encoder.rb +0 -62
  122. data/lib/wlang/encoder_set.rb +0 -122
  123. data/lib/wlang/errors.rb +0 -80
  124. data/lib/wlang/ext/hash_methodize.rb +0 -13
  125. data/lib/wlang/ext/string.rb +0 -44
  126. data/lib/wlang/hash_scope.rb +0 -89
  127. data/lib/wlang/hosted_language.rb +0 -146
  128. data/lib/wlang/intelligent_buffer.rb +0 -94
  129. data/lib/wlang/parser.rb +0 -332
  130. data/lib/wlang/parser_state.rb +0 -94
  131. data/lib/wlang/rule.rb +0 -66
  132. data/lib/wlang/rule_set.rb +0 -106
  133. data/lib/wlang/rulesets/basic_ruleset.rb +0 -83
  134. data/lib/wlang/rulesets/buffering_ruleset.rb +0 -115
  135. data/lib/wlang/rulesets/context_ruleset.rb +0 -111
  136. data/lib/wlang/rulesets/encoding_ruleset.rb +0 -73
  137. data/lib/wlang/rulesets/imperative_ruleset.rb +0 -132
  138. data/lib/wlang/rulesets/ruleset_utils.rb +0 -317
  139. data/lib/wlang/wlang_command.rb +0 -51
  140. data/lib/wlang/wlang_command_options.rb +0 -163
  141. data/spec/basic_object.spec +0 -40
  142. data/spec/coderay_dialect.spec +0 -8
  143. data/spec/dialect/apply_post_transform.spec +0 -16
  144. data/spec/global_extensions.rb +0 -2
  145. data/spec/hash_scope.spec +0 -76
  146. data/spec/redcloth_dialect.spec +0 -24
  147. data/spec/test_all.rb +0 -8
  148. data/spec/wlang.spec +0 -53
  149. data/spec/wlang_spec.rb +0 -8
  150. data/spec/xhtml_dialect.spec +0 -22
  151. data/tasks/genspec.rake +0 -5
  152. data/test/blackbox/basic/execution_1.exp +0 -1
  153. data/test/blackbox/basic/execution_1.tpl +0 -1
  154. data/test/blackbox/basic/execution_2.exp +0 -1
  155. data/test/blackbox/basic/execution_2.tpl +0 -1
  156. data/test/blackbox/basic/execution_3.exp +0 -1
  157. data/test/blackbox/basic/execution_3.tpl +0 -1
  158. data/test/blackbox/basic/execution_4.exp +0 -1
  159. data/test/blackbox/basic/execution_4.tpl +0 -1
  160. data/test/blackbox/basic/inclusion_1.exp +0 -1
  161. data/test/blackbox/basic/inclusion_1.tpl +0 -1
  162. data/test/blackbox/basic/inclusion_2.exp +0 -1
  163. data/test/blackbox/basic/inclusion_2.tpl +0 -1
  164. data/test/blackbox/basic/injection_1.exp +0 -1
  165. data/test/blackbox/basic/injection_1.tpl +0 -1
  166. data/test/blackbox/basic/injection_2.exp +0 -1
  167. data/test/blackbox/basic/injection_2.tpl +0 -1
  168. data/test/blackbox/basic/modulation_1.exp +0 -1
  169. data/test/blackbox/basic/modulation_1.tpl +0 -1
  170. data/test/blackbox/basic/modulation_2.exp +0 -1
  171. data/test/blackbox/basic/modulation_2.tpl +0 -1
  172. data/test/blackbox/basic/recursive_app_1.exp +0 -1
  173. data/test/blackbox/basic/recursive_app_1.tpl +0 -1
  174. data/test/blackbox/basic/recursive_app_2.exp +0 -1
  175. data/test/blackbox/basic/recursive_app_2.tpl +0 -1
  176. data/test/blackbox/buffering/data_1.rb +0 -1
  177. data/test/blackbox/buffering/data_assignment_1.exp +0 -1
  178. data/test/blackbox/buffering/data_assignment_1.tpl +0 -1
  179. data/test/blackbox/buffering/data_assignment_2.exp +0 -1
  180. data/test/blackbox/buffering/data_assignment_2.tpl +0 -1
  181. data/test/blackbox/buffering/data_assignment_3.exp +0 -1
  182. data/test/blackbox/buffering/data_assignment_3.tpl +0 -1
  183. data/test/blackbox/buffering/data_assignment_4.exp +0 -1
  184. data/test/blackbox/buffering/data_assignment_4.tpl +0 -1
  185. data/test/blackbox/buffering/input_1.exp +0 -1
  186. data/test/blackbox/buffering/input_1.tpl +0 -1
  187. data/test/blackbox/buffering/input_2.exp +0 -1
  188. data/test/blackbox/buffering/input_2.tpl +0 -1
  189. data/test/blackbox/buffering/input_3.exp +0 -1
  190. data/test/blackbox/buffering/input_3.tpl +0 -1
  191. data/test/blackbox/buffering/input_inclusion.exp +0 -1
  192. data/test/blackbox/buffering/input_inclusion.tpl +0 -1
  193. data/test/blackbox/buffering/input_inclusion_1.exp +0 -0
  194. data/test/blackbox/buffering/input_inclusion_1.tpl +0 -1
  195. data/test/blackbox/buffering/input_inclusion_2.exp +0 -1
  196. data/test/blackbox/buffering/input_inclusion_2.tpl +0 -1
  197. data/test/blackbox/buffering/input_inclusion_3.exp +0 -1
  198. data/test/blackbox/buffering/input_inclusion_3.tpl +0 -1
  199. data/test/blackbox/buffering/input_inclusion_4.exp +0 -0
  200. data/test/blackbox/buffering/input_inclusion_4.tpl +0 -1
  201. data/test/blackbox/buffering/input_inclusion_5.exp +0 -1
  202. data/test/blackbox/buffering/input_inclusion_5.tpl +0 -1
  203. data/test/blackbox/buffering/input_inclusion_6.exp +0 -1
  204. data/test/blackbox/buffering/input_inclusion_6.tpl +0 -1
  205. data/test/blackbox/buffering/input_inclusion_7.exp +0 -0
  206. data/test/blackbox/buffering/input_inclusion_7.tpl +0 -1
  207. data/test/blackbox/buffering/text_1.txt +0 -1
  208. data/test/blackbox/buffering/wlang.txt +0 -1
  209. data/test/blackbox/context/assignment_1.exp +0 -1
  210. data/test/blackbox/context/assignment_1.tpl +0 -1
  211. data/test/blackbox/context/assignment_2.exp +0 -1
  212. data/test/blackbox/context/assignment_2.tpl +0 -1
  213. data/test/blackbox/context/assignment_3.exp +0 -2
  214. data/test/blackbox/context/assignment_3.tpl +0 -2
  215. data/test/blackbox/context/assignment_4.exp +0 -1
  216. data/test/blackbox/context/assignment_4.tpl +0 -1
  217. data/test/blackbox/context/block_assignment_1.exp +0 -1
  218. data/test/blackbox/context/block_assignment_1.tpl +0 -1
  219. data/test/blackbox/context/block_assignment_2.exp +0 -1
  220. data/test/blackbox/context/block_assignment_2.tpl +0 -1
  221. data/test/blackbox/context/modulo_assignment_1.exp +0 -1
  222. data/test/blackbox/context/modulo_assignment_1.tpl +0 -1
  223. data/test/blackbox/context/modulo_assignment_2.exp +0 -1
  224. data/test/blackbox/context/modulo_assignment_2.tpl +0 -1
  225. data/test/blackbox/data_1.rb +0 -1
  226. data/test/blackbox/postblock/hello.exp +0 -1
  227. data/test/blackbox/postblock/hello.pre +0 -1
  228. data/test/blackbox/postblock/hello.tpl +0 -1
  229. data/test/blackbox/postblock/hello_input_inclusion.exp +0 -1
  230. data/test/blackbox/postblock/hello_input_inclusion.tpl +0 -1
  231. data/test/blackbox/postblock/hello_to_authors.exp +0 -1
  232. data/test/blackbox/postblock/hello_to_authors.tpl +0 -1
  233. data/test/blackbox/poststring/hello.exp +0 -1
  234. data/test/blackbox/poststring/hello.tpl +0 -1
  235. data/test/blackbox/test_all.rb +0 -70
  236. data/test/standard_dialects/ruby/data.rb +0 -7
  237. data/test/standard_dialects/ruby/inclusion.exp +0 -6
  238. data/test/standard_dialects/ruby/inclusion.tpl +0 -6
  239. data/test/standard_dialects/test_all.rb +0 -29
  240. data/test/standard_dialects/yaml/assumptions_test.rb +0 -13
  241. data/test/standard_dialects/yaml/data.rb +0 -3
  242. data/test/standard_dialects/yaml/inclusion_1.exp +0 -7
  243. data/test/standard_dialects/yaml/inclusion_1.tpl +0 -2
  244. data/test/standard_dialects/yaml/inclusion_2.exp +0 -5
  245. data/test/standard_dialects/yaml/inclusion_2.tpl +0 -3
  246. data/test/unit/test_all.rb +0 -9
  247. data/test/unit/wlang/anagram_bugs_test.rb +0 -111
  248. data/test/unit/wlang/basic_ruleset_test.rb +0 -52
  249. data/test/unit/wlang/buffering_ruleset_test.rb +0 -102
  250. data/test/unit/wlang/buffering_template1.wtpl +0 -1
  251. data/test/unit/wlang/buffering_template2.wtpl +0 -1
  252. data/test/unit/wlang/buffering_template3.wtpl +0 -1
  253. data/test/unit/wlang/buffering_template4.wtpl +0 -1
  254. data/test/unit/wlang/buffering_template5.wtpl +0 -1
  255. data/test/unit/wlang/context_ruleset_test.rb +0 -32
  256. data/test/unit/wlang/data.rb +0 -3
  257. data/test/unit/wlang/encoder_set_test.rb +0 -42
  258. data/test/unit/wlang/imperative_ruleset_test.rb +0 -107
  259. data/test/unit/wlang/intelligent_buffer_test.rb +0 -194
  260. data/test/unit/wlang/othersymbols_test.rb +0 -16
  261. data/test/unit/wlang/parser_test.rb +0 -88
  262. data/test/unit/wlang/plain_text_dialect_test.rb +0 -21
  263. data/test/unit/wlang/ruby_dialect_test.rb +0 -100
  264. data/test/unit/wlang/ruby_expected.rb +0 -3
  265. data/test/unit/wlang/ruby_template.wrb +0 -3
  266. data/test/unit/wlang/ruleset_utils_test.rb +0 -245
  267. data/test/unit/wlang/specification_examples_test.rb +0 -54
  268. data/test/unit/wlang/test_utils.rb +0 -25
  269. data/test/unit/wlang/wlang_test.rb +0 -80
@@ -1,16 +0,0 @@
1
- require 'rubygems'
2
- module WLang
3
- class EncoderSet
4
- module RedClothEncoders
5
-
6
- # Default encoders
7
- DEFAULT_ENCODERS = {"xhtml" => :xhtml_encoding}
8
-
9
- # RDoc encoding
10
- def self.xhtml_encoding(src, options)
11
- RedCloth.new(src).to_html
12
- end
13
-
14
- end # RedClothEncoders
15
- end # module EncoderSet
16
- end # module WLang
@@ -1,118 +0,0 @@
1
- module WLang
2
- class EncoderSet
3
-
4
- # Encoders for ruby
5
- module Ruby
6
-
7
- # Default encoders
8
- DEFAULT_ENCODERS = {"main-encoding" => :main_encoding,
9
- "single-quoting" => :single_quoting,
10
- "double-quoting" => :double_quoting,
11
- "regex-escaping" => :regex_escaping,
12
- "method-case" => :method_case,
13
- "literal" => :to_literal}
14
-
15
- # No-op encoding here
16
- def self.main_encoding(src, options); src; end
17
-
18
- # Single-quoting encoding
19
- def self.single_quoting(src, options); src.gsub(/([^\\])'/,%q{\1\\\'}); end
20
-
21
- # Double-quoting encoding
22
- def self.double_quoting(src, options); src.gsub('"','\"'); end
23
-
24
- # Regexp-escaping encoding
25
- def self.regex_escaping(src, options); Regexp.escape(src); end
26
-
27
- # Converts any source to a typical ruby method name
28
- def self.method_case(src, options)
29
- src.strip.gsub(/[^a-zA-Z0-9\s]/," ").
30
- gsub(/([A-Z])/){ " " + $1.downcase}.
31
- strip.
32
- gsub(/^([^a-z])/){ "_" + $1 }.
33
- gsub(/\s+/){"_"}
34
- end
35
-
36
- # Ruby classes for which value.inspect will work for returning
37
- # a valid literal
38
- SAFE_LITERAL_CLASSES = {}
39
- [NilClass, TrueClass, FalseClass,
40
- Fixnum, Bignum,
41
- Float,
42
- String,
43
- Symbol,
44
- Class,
45
- Module,
46
- Regexp].each{|c| SAFE_LITERAL_CLASSES[c] = true}
47
-
48
- #
49
- # Converts _value_ to a ruby literal and returns it.
50
- #
51
- # Behavior of the algorithm when th value cannot be recognized depends
52
- # on the :fallback option:
53
- # * when set to :fail, it raises a NoSuchLiteralError
54
- # * when set to :inspect, it returns <code>value.inspect</code>
55
- # * when set to :marshal it uses <code>Marshal::dump(value)</code>
56
- # * when set to :json it uses <code>JSON::generate(value)</code>
57
- #
58
- def self.to_literal(value, options = {:fallback => :fail})
59
- if value.respond_to?(:to_ruby_literal)
60
- value.to_ruby_literal
61
- elsif value.respond_to?(:to_ruby)
62
- value.to_ruby
63
- elsif value == (1.0/0)
64
- return '(1.0/0)'
65
- elsif value == -(1.0/0)
66
- return '(-1.0/0)'
67
- elsif SAFE_LITERAL_CLASSES.key?(value.class)
68
- value.inspect
69
- elsif value.kind_of?(Array)
70
- "[" + value.collect{|v| to_literal(v, options)}.join(', ') + "]"
71
- elsif value.kind_of?(Hash)
72
- "{" + value.collect{|pair| "#{to_literal(pair[0], options)} => #{to_literal(pair[1], options)}"}.join(', ') + "}"
73
- elsif value.kind_of?(Date)
74
- "Date::parse(#{value.to_s.inspect})"
75
- elsif value.kind_of?(Time)
76
- "Time::parse(#{value.inspect.inspect})"
77
- else
78
- case options[:fallback]
79
- when :to_s
80
- value.to_s
81
- when :inspect
82
- value.inspect
83
- when :marshal
84
- "Marshal::load(#{Marshal::dump(value).inspect})"
85
- when :json
86
- require 'json'
87
- JSON::generate(value)
88
- when :fail, nil
89
- raise WLang::Error, "Unable to convert #{value.inspect} to a ruby literal"
90
- else
91
- raise ArgumentError, "Invalid fallback option #{options[:fallback]}"
92
- end
93
- end
94
- end
95
-
96
- end # module Ruby
97
-
98
- end
99
- class RuleSet
100
-
101
- # Defines rulset of the wlang/ruby dialect
102
- module Ruby
103
-
104
- # Default mapping between tag symbols and methods
105
- DEFAULT_RULESET = {'+' => :inclusion}
106
-
107
- # Rule implementation of <tt>+{wlang/ruby}</tt>.
108
- def self.inclusion(parser, offset)
109
- expression, reached = parser.parse(offset, "wlang/hosted")
110
- value = parser.evaluate(expression)
111
- result = WLang::EncoderSet::Ruby.to_literal(value)
112
- [result, reached]
113
- end
114
-
115
- end # module Ruby
116
-
117
- end # class RuleSet
118
- end # module WLang
@@ -1,38 +0,0 @@
1
- module WLang
2
- class EncoderSet
3
-
4
- # Encoders for ruby
5
- module SQL
6
-
7
- # Default encoders
8
- DEFAULT_ENCODERS = {"single-quoting" => :single_quoting}
9
-
10
- # Upcase encoding
11
- def self.single_quoting(src, options); src.gsub("'","\\\\'"); end
12
-
13
- end # module SQL
14
-
15
- # Encoders for ruby
16
- module SQL::Sybase
17
-
18
- # Default encoders
19
- DEFAULT_ENCODERS = {"single-quoting" => :single_quoting}
20
-
21
- # Upcase encoding
22
- def self.single_quoting(src, options); src.gsub("'","''"); end
23
-
24
- end # module SQL::Sybase
25
-
26
- end
27
- class RuleSet
28
-
29
- # Defines rulset of the wlang/ruby dialect
30
- module SQL
31
-
32
- # Default mapping between tag symbols and methods
33
- DEFAULT_RULESET = {}
34
-
35
- end # module SQL
36
-
37
- end
38
- end
@@ -1,181 +0,0 @@
1
- require "wlang/rulesets/basic_ruleset"
2
- require "wlang/rulesets/encoding_ruleset"
3
- require "wlang/rulesets/imperative_ruleset"
4
- require "wlang/rulesets/buffering_ruleset"
5
- require "wlang/rulesets/context_ruleset"
6
-
7
- WLang::data_loader(".yml", ".yaml") do |file|
8
- require "yaml"
9
- YAML.load(File.open(file))
10
- end
11
-
12
- WLang::data_loader(".rb", ".ruby", ".dsl") do |file|
13
- Kernel.eval(File.read(file))
14
- end
15
-
16
- # plain-text dialect
17
- WLang::dialect("plain-text") do
18
- ruby_require("wlang/dialects/plain_text_dialect") do
19
- encoders WLang::EncoderSet::PlainText
20
- end
21
- end
22
-
23
- # ruby dialect
24
- WLang::dialect("ruby", ".rb", ".ruby") do
25
- ruby_require "wlang/dialects/ruby_dialect" do
26
- encoders WLang::EncoderSet::Ruby
27
- end
28
- end
29
-
30
- # yaml dialect
31
- WLang::dialect("yaml", ".yaml", ".yml") do
32
- ruby_require "wlang/dialects/yaml_dialect" do
33
- encoders WLang::EncoderSet::YAML
34
- end
35
- end
36
-
37
- # sql dialect
38
- WLang::dialect("sql", ".sql") do
39
- ruby_require "wlang/dialects/sql_dialect" do
40
- encoders WLang::EncoderSet::SQL
41
- end
42
- dialect("sybase", '.sybsql') do
43
- ruby_require "wlang/dialects/sql_dialect" do
44
- encoders WLang::EncoderSet::SQL::Sybase
45
- end
46
- end
47
- end
48
-
49
- # ruby dialect
50
- WLang::dialect("xhtml", ".html", ".xhtml", ".htm") do
51
- ruby_require "cgi", "wlang/dialects/xhtml_dialect" do
52
- encoders WLang::EncoderSet::XHtml
53
- end
54
- dialect("coderay") do
55
- ruby_require("coderay", "wlang/dialects/coderay_dialect") do
56
- encoders WLang::EncoderSet::CodeRayEncoderSet
57
- end
58
- end
59
- end
60
-
61
- # rdoc dialect
62
- WLang::dialect("rdoc") do
63
- ruby_require "rdoc", "wlang/dialects/rdoc_dialect" do
64
- encoders WLang::EncoderSet::RDocEncoders
65
- end
66
- end
67
-
68
- # redcloth (textile) dialect
69
- WLang::dialect("redcloth") do
70
- ruby_require "RedCloth", "wlang/dialects/redcloth_dialect" do
71
- encoders WLang::EncoderSet::RedClothEncoders
72
- end
73
- end
74
-
75
- # bluecloth (markdown) dialect
76
- WLang::dialect("bluecloth") do
77
- ruby_require "BlueCloth", "wlang/dialects/bluecloth_dialect" do
78
- encoders WLang::EncoderSet::BlueClothEncoders
79
- end
80
- end
81
-
82
- # wlang dialects
83
- WLang::dialect("wlang") do
84
-
85
- # Dummy dialect, no tag at all
86
- dialect("dummy") do
87
- end
88
-
89
- # wlang/ruby dialect
90
- dialect("hosted") do
91
- ruby_require "wlang/dialects/hosted_dialect" do
92
- encoders WLang::EncoderSet::Hosted
93
- rules WLang::RuleSet::Basic
94
- rules WLang::RuleSet::Encoding
95
- rules WLang::RuleSet::Imperative
96
- rules WLang::RuleSet::Context
97
- rules WLang::RuleSet::Hosted
98
- end
99
- end
100
-
101
- # wlang/active-string dialect
102
- dialect("active-string") do
103
- rules WLang::RuleSet::Basic
104
- rules WLang::RuleSet::Imperative
105
- end
106
-
107
- # wlang/active-text dialect
108
- dialect("active-text") do
109
- rules WLang::RuleSet::Basic
110
- rules WLang::RuleSet::Imperative
111
- rules WLang::RuleSet::Buffering
112
- rules WLang::RuleSet::Context
113
- end
114
-
115
- # wlang/uri dialect
116
- dialect("uri") do
117
- rules WLang::RuleSet::Basic
118
- end
119
-
120
- # wlang/ruby dialect
121
- dialect("ruby", ".wrb", ".wruby") do
122
- ruby_require "wlang/dialects/ruby_dialect" do
123
- encoders WLang::EncoderSet::Ruby
124
- rules WLang::RuleSet::Basic
125
- rules WLang::RuleSet::Encoding
126
- rules WLang::RuleSet::Imperative
127
- rules WLang::RuleSet::Buffering
128
- rules WLang::RuleSet::Context
129
- rules WLang::RuleSet::Ruby
130
- end
131
- end
132
-
133
- # wlang/ruby dialect
134
- dialect("yaml", ".wyaml", ".wyml") do
135
- ruby_require "wlang/dialects/yaml_dialect" do
136
- encoders WLang::EncoderSet::YAML
137
- rules WLang::RuleSet::Basic
138
- rules WLang::RuleSet::Encoding
139
- rules WLang::RuleSet::Imperative
140
- rules WLang::RuleSet::Buffering
141
- rules WLang::RuleSet::Context
142
- rules WLang::RuleSet::YAML
143
- end
144
- end
145
-
146
- # wlang/ruby dialect
147
- dialect("xhtml", ".wtpl", ".whtml") do
148
- ruby_require "cgi", "wlang/dialects/xhtml_dialect" do
149
- encoders WLang::EncoderSet::XHtml
150
- rules WLang::RuleSet::Basic
151
- rules WLang::RuleSet::Encoding
152
- rules WLang::RuleSet::Imperative
153
- rules WLang::RuleSet::Buffering
154
- rules WLang::RuleSet::Context
155
- rules WLang::RuleSet::XHtml
156
- end
157
- end
158
-
159
- # wlang/ruby dialect
160
- dialect("sql", ".wsql") do
161
- ruby_require "wlang/dialects/sql_dialect" do
162
- encoders WLang::EncoderSet::SQL
163
- rules WLang::RuleSet::Basic
164
- rules WLang::RuleSet::Encoding
165
- rules WLang::RuleSet::Imperative
166
- rules WLang::RuleSet::SQL
167
- end
168
-
169
- dialect("sybase") do
170
- ruby_require "wlang/dialects/sql_dialect" do
171
- encoders WLang::EncoderSet::SQL
172
- encoders WLang::EncoderSet::SQL::Sybase
173
- rules WLang::RuleSet::Basic
174
- rules WLang::RuleSet::Encoding
175
- rules WLang::RuleSet::Imperative
176
- rules WLang::RuleSet::SQL
177
- end
178
- end
179
- end
180
-
181
- end
@@ -1,63 +0,0 @@
1
- require 'cgi'
2
- module WLang
3
- class EncoderSet
4
-
5
- # Defines encoders of the whtml dialect
6
- module XHtml
7
-
8
- # Default encoders
9
- DEFAULT_ENCODERS = {"main-encoding" => :entities_encoding,
10
- "single-quoting" => :single_quoting,
11
- "double-quoting" => :double_quoting,
12
- "entities-encoding" => :entities_encoding}
13
-
14
-
15
- # Single-quoting encoding
16
- def self.single_quoting(src, options); src.gsub(/([^\\])'/,%q{\1\\\'}); end
17
-
18
- # Double-quoting encoding
19
- def self.double_quoting(src, options); src.gsub('"','\"'); end
20
-
21
- # Entities-encoding
22
- def self.entities_encoding(src, options);
23
- CGI::escapeHTML(src)
24
- end
25
-
26
- end # module XHtml
27
- end
28
- class RuleSet
29
-
30
- # Defines rulset of the wlang/xhtml dialect
31
- module XHtml
32
-
33
- # Default mapping between tag symbols and methods
34
- DEFAULT_RULESET = {'@' => :at}
35
-
36
- def self.at(parser, offset)
37
- # parse the url
38
- url, reached = parser.parse(offset, 'wlang/active-string')
39
- url = WLang::encode(url, 'wlang/xhtml/double-quoting')
40
-
41
- # parse the label if there is one
42
- label = nil
43
- if parser.has_block?(reached)
44
- label, reached = parser.parse_block(reached)
45
- label = WLang::encode(label, 'wlang/xhtml/entities-encoding')
46
- end
47
-
48
- if label and url.respond_to?(:to_xhtml_link)
49
- [url.to_xhtml_link(url, label), reached]
50
- elsif url.respond_to?(:to_xhtml_href)
51
- [url.to_xhtml_href(url), reached]
52
- elsif label
53
- ["<a href=\"#{url}\">#{label}</a>", reached]
54
- else
55
- [url, reached]
56
- end
57
- end
58
-
59
- end # module XHtml
60
-
61
- end
62
- end
63
-
@@ -1,30 +0,0 @@
1
- require "yaml"
2
- module WLang
3
- class EncoderSet
4
- module YAML
5
-
6
- # Default encoders
7
- DEFAULT_ENCODERS = {}
8
-
9
- end # module YAML
10
- end
11
- class RuleSet
12
- module YAML
13
-
14
- # Default mapping between tag symbols and methods
15
- DEFAULT_RULESET = {'+' => :inclusion}
16
-
17
- # Rule implementation of <tt>+{wlang/ruby}</tt>.
18
- def self.inclusion(parser, offset)
19
- expression, reached = parser.parse(offset, "wlang/hosted")
20
- value = parser.evaluate(expression)
21
- col = parser.buffer.__wlang_column_of(parser.buffer.length)
22
- result = value.to_yaml.
23
- gsub(/^\s*---\s*|\n$/,"").
24
- __wlang_realign(col-1, true)
25
- [result, reached]
26
- end
27
-
28
- end # module YAML
29
- end # class RuleSet
30
- end # module WLang