brakeman 7.1.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +11 -0
  3. data/README.md +1 -1
  4. data/bundle/load.rb +2 -2
  5. data/bundle/ruby/3.2.0/gems/erubi-1.13.1/CHANGELOG +111 -0
  6. data/bundle/ruby/3.2.0/gems/{erubis-2.7.0 → erubi-1.13.1}/MIT-LICENSE +1 -0
  7. data/bundle/ruby/3.2.0/gems/erubi-1.13.1/README.rdoc +151 -0
  8. data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_block.rb +91 -0
  9. data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_end.rb +58 -0
  10. data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi.rb +299 -0
  11. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/asciidoc.rb +12 -5
  12. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/babel.rb +5 -0
  13. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/builder.rb +4 -0
  14. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/coffee.rb +14 -4
  15. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/commonmarker.rb +41 -0
  16. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/csv.rb +63 -0
  17. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/erb.rb +130 -0
  18. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/erubi.rb +41 -8
  19. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/etanni.rb +7 -0
  20. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/haml.rb +67 -1
  21. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/kramdown.rb +59 -0
  22. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/liquid.rb +93 -0
  23. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/livescript.rb +11 -4
  24. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/mapping.rb +8 -8
  25. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/markaby.rb +11 -2
  26. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/nokogiri.rb +13 -2
  27. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/pandoc.rb +81 -0
  28. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/pipeline.rb +6 -1
  29. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/plain.rb +5 -1
  30. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/prawn.rb +17 -6
  31. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/radius.rb +96 -0
  32. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdiscount.rb +82 -0
  33. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdoc.rb +33 -0
  34. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcarpet.rb +73 -0
  35. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcloth.rb +40 -0
  36. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rst-pandoc.rb +33 -0
  37. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/sass.rb +16 -3
  38. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/slim.rb +18 -0
  39. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/string.rb +10 -2
  40. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/template.rb +5 -5
  41. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/typescript.rb +5 -0
  42. data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/yajl.rb +91 -0
  43. data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt.rb +1 -2
  44. data/lib/brakeman/app_tree.rb +7 -2
  45. data/lib/brakeman/checks/check_model_attributes.rb +1 -1
  46. data/lib/brakeman/checks/check_render.rb +1 -27
  47. data/lib/brakeman/checks/check_render_rce.rb +43 -0
  48. data/lib/brakeman/checks/check_session_settings.rb +1 -1
  49. data/lib/brakeman/checks.rb +31 -25
  50. data/lib/brakeman/commandline.rb +6 -1
  51. data/lib/brakeman/file_parser.rb +3 -2
  52. data/lib/brakeman/logger.rb +264 -0
  53. data/lib/brakeman/options.rb +0 -9
  54. data/lib/brakeman/parsers/rails_erubi.rb +82 -0
  55. data/lib/brakeman/parsers/template_parser.rb +7 -15
  56. data/lib/brakeman/processor.rb +2 -2
  57. data/lib/brakeman/processors/controller_alias_processor.rb +1 -1
  58. data/lib/brakeman/processors/controller_processor.rb +3 -3
  59. data/lib/brakeman/processors/{erubis_template_processor.rb → erubi_template_procesor.rb} +3 -3
  60. data/lib/brakeman/processors/lib/rails2_config_processor.rb +4 -3
  61. data/lib/brakeman/processors/lib/rails2_route_processor.rb +1 -1
  62. data/lib/brakeman/processors/lib/render_helper.rb +1 -1
  63. data/lib/brakeman/processors/lib/render_path.rb +1 -1
  64. data/lib/brakeman/processors/model_processor.rb +1 -1
  65. data/lib/brakeman/report/ignore/config.rb +1 -1
  66. data/lib/brakeman/scanner.rb +25 -49
  67. data/lib/brakeman/tracker/collection.rb +12 -2
  68. data/lib/brakeman/tracker/config.rb +17 -13
  69. data/lib/brakeman/tracker/constants.rb +17 -2
  70. data/lib/brakeman/tracker/controller.rb +1 -1
  71. data/lib/brakeman/tracker.rb +7 -15
  72. data/lib/brakeman/version.rb +1 -1
  73. data/lib/brakeman.rb +89 -49
  74. metadata +51 -80
  75. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/CHANGES.txt +0 -828
  76. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/README.txt +0 -102
  77. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/erubis +0 -3468
  78. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -132
  79. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/inline-require +0 -179
  80. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/context.rb +0 -83
  81. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -357
  82. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -117
  83. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -113
  84. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -110
  85. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -119
  86. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -126
  87. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -95
  88. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -99
  89. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -125
  90. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -114
  91. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -127
  92. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -120
  93. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -723
  94. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/error.rb +0 -23
  95. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -88
  96. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -85
  97. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -47
  98. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -197
  99. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -353
  100. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -9
  101. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/main.rb +0 -516
  102. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -58
  103. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -144
  104. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/util.rb +0 -22
  105. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis.rb +0 -73
  106. data/bundle/ruby/3.2.0/gems/erubis-2.7.0/setup.rb +0 -1331
  107. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/creole.rb +0 -16
  108. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/csv.rb +0 -53
  109. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/erb.rb +0 -65
  110. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/kramdown.rb +0 -13
  111. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/liquid.rb +0 -37
  112. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pandoc.rb +0 -39
  113. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/radius.rb +0 -41
  114. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdiscount.rb +0 -23
  115. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdoc.rb +0 -11
  116. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcarpet.rb +0 -31
  117. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcloth.rb +0 -13
  118. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rst-pandoc.rb +0 -10
  119. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/slim.rb +0 -5
  120. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/yajl.rb +0 -81
  121. data/lib/brakeman/parsers/erubis_patch.rb +0 -11
  122. data/lib/brakeman/parsers/rails2_erubis.rb +0 -9
  123. data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +0 -52
  124. data/lib/brakeman/parsers/rails3_erubis.rb +0 -85
  125. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/COPYING +0 -0
  126. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_emacs_org.rb +0 -0
  127. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_handlebars.rb +0 -0
  128. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_jbuilder.rb +0 -0
  129. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_org.rb +0 -0
  130. /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/cli.rb +0 -0
@@ -1,119 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/engine'
7
- require 'erubis/enhancer'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- module JavascriptGenerator
14
- include Generator
15
-
16
- def self.supported_properties() # :nodoc:
17
- list = []
18
- #list << [:indent, '', "indent spaces (ex. ' ')"]
19
- #list << [:bufvar, '_buf', "output buffer variable name"]
20
- list << [:docwrite, true, "use 'document.write()' when true"]
21
- return list
22
- end
23
-
24
- def init_generator(properties={})
25
- super
26
- @escapefunc ||= 'escape'
27
- @indent = properties[:indent] || ''
28
- @bufvar = properties[:bufvar] || '_buf'
29
- @docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release
30
- end
31
-
32
- def add_preamble(src)
33
- src << "#{@indent}var #{@bufvar} = [];"
34
- end
35
-
36
- def escape_text(text)
37
- @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
38
- return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
39
- end
40
-
41
- def add_indent(src, indent)
42
- src << (src.empty? || src[-1] == ?\n ? indent : ' ')
43
- end
44
-
45
- def add_text(src, text)
46
- return if text.empty?
47
- add_indent(src, @indent)
48
- src << @bufvar << '.push("'
49
- s = escape_text(text)
50
- if s[-1] == ?\n
51
- s[-2, 2] = ''
52
- src << s << "\");\n"
53
- else
54
- src << s << "\");"
55
- end
56
- end
57
-
58
- def add_stmt(src, code)
59
- src << code
60
- end
61
-
62
- def add_expr_literal(src, code)
63
- add_indent(src, @indent)
64
- code.strip!
65
- src << "#{@bufvar}.push(#{code});"
66
- end
67
-
68
- def add_expr_escaped(src, code)
69
- add_expr_literal(src, escaped_expr(code))
70
- end
71
-
72
- def add_expr_debug(src, code)
73
- add_indent(src, @indent)
74
- code.strip!
75
- src << "alert(\"*** debug: #{code}=\"+(#{code}));"
76
- end
77
-
78
- def add_postamble(src)
79
- src << "\n" if src[-1] == ?;
80
- if @docwrite
81
- src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n"
82
- else
83
- src << @indent << @bufvar << ".join(\"\");\n"
84
- end
85
- end
86
-
87
- end
88
-
89
-
90
- ##
91
- ## engine for JavaScript
92
- ##
93
- class Ejavascript < Basic::Engine
94
- include JavascriptGenerator
95
- end
96
-
97
-
98
- class EscapedEjavascript < Ejavascript
99
- include EscapeEnhancer
100
- end
101
-
102
-
103
- #class XmlEjavascript < Ejavascript
104
- # include EscapeEnhancer
105
- #end
106
-
107
-
108
- class PI::Ejavascript < PI::Engine
109
- include JavascriptGenerator
110
-
111
- def init_converter(properties={})
112
- @pi = 'js'
113
- super(properties)
114
- end
115
-
116
- end
117
-
118
-
119
- end
@@ -1,126 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/enhancer'
7
- require 'erubis/engine/eruby'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- #--
14
- ## moved to engine/ruby.rb
15
- #class EscapedEruby < Eruby
16
- # include EscapeEnhancer
17
- #end
18
- #++
19
-
20
-
21
- #--
22
- ### (obsolete)
23
- #class FastEruby < Eruby
24
- # include FastEnhancer
25
- #end
26
- #++
27
-
28
-
29
- class StdoutEruby < Eruby
30
- include StdoutEnhancer
31
- end
32
-
33
-
34
- class PrintOutEruby < Eruby
35
- include PrintOutEnhancer
36
- end
37
-
38
-
39
- class PrintEnabledEruby < Eruby
40
- include PrintEnabledEnhancer
41
- end
42
-
43
-
44
- class ArrayEruby < Eruby
45
- include ArrayEnhancer
46
- end
47
-
48
-
49
- class ArrayBufferEruby < Eruby
50
- include ArrayBufferEnhancer
51
- end
52
-
53
-
54
- class StringBufferEruby < Eruby
55
- include StringBufferEnhancer
56
- end
57
-
58
-
59
- class StringIOEruby < Eruby
60
- include StringIOEnhancer
61
- end
62
-
63
-
64
- class ErboutEruby < Eruby
65
- include ErboutEnhancer
66
- end
67
-
68
-
69
- class NoTextEruby < Eruby
70
- include NoTextEnhancer
71
- end
72
-
73
-
74
- class NoCodeEruby < Eruby
75
- include NoCodeEnhancer
76
- end
77
-
78
-
79
- class SimplifiedEruby < Eruby
80
- include SimplifyEnhancer
81
- end
82
-
83
-
84
- class StdoutSimplifiedEruby < Eruby
85
- include StdoutEnhancer
86
- include SimplifyEnhancer
87
- end
88
-
89
-
90
- class PrintOutSimplifiedEruby < Eruby
91
- include PrintOutEnhancer
92
- include SimplifyEnhancer
93
- end
94
-
95
-
96
- class BiPatternEruby < Eruby
97
- include BiPatternEnhancer
98
- end
99
-
100
-
101
- class PercentLineEruby < Eruby
102
- include PercentLineEnhancer
103
- end
104
-
105
-
106
- class PrefixedLineEruby < Eruby
107
- include PrefixedLineEnhancer
108
- end
109
-
110
-
111
- class HeaderFooterEruby < Eruby
112
- include HeaderFooterEnhancer
113
- end
114
-
115
-
116
- class DeleteIndentEruby < Eruby
117
- include DeleteIndentEnhancer
118
- end
119
-
120
-
121
- class InterpolationEruby < Eruby
122
- include InterpolationEnhancer
123
- end
124
-
125
-
126
- end
@@ -1,95 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/engine'
7
- require 'erubis/enhancer'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- module PerlGenerator
14
- include Generator
15
-
16
- def self.supported_properties() # :nodoc:
17
- return [
18
- [:func, 'print', "function name"],
19
- ]
20
- end
21
-
22
- def init_generator(properties={})
23
- super
24
- @escapefunc ||= 'encode_entities'
25
- @func = properties[:func] || 'print'
26
- end
27
-
28
- def add_preamble(src)
29
- src << "use HTML::Entities; ";
30
- end
31
-
32
- def escape_text(text)
33
- return text.gsub!(/['\\]/, '\\\\\&') || text
34
- end
35
-
36
- def add_text(src, text)
37
- src << @func << "('" << escape_text(text) << "'); " unless text.empty?
38
- end
39
-
40
- def add_expr_literal(src, code)
41
- code.strip!
42
- src << @func << "(" << code << "); "
43
- end
44
-
45
- def add_expr_escaped(src, code)
46
- add_expr_literal(src, escaped_expr(code))
47
- end
48
-
49
- def add_expr_debug(src, code)
50
- code.strip!
51
- s = code.gsub(/\'/, "\\'")
52
- src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
53
- end
54
-
55
- def add_stmt(src, code)
56
- src << code
57
- end
58
-
59
- def add_postamble(src)
60
- src << "\n" unless src[-1] == ?\n
61
- end
62
-
63
- end
64
-
65
-
66
- ##
67
- ## engine for Perl
68
- ##
69
- class Eperl < Basic::Engine
70
- include PerlGenerator
71
- end
72
-
73
-
74
- class EscapedEperl < Eperl
75
- include EscapeEnhancer
76
- end
77
-
78
-
79
- #class XmlEperl < Eperl
80
- # include EscapeEnhancer
81
- #end
82
-
83
-
84
- class PI::Eperl < PI::Engine
85
- include PerlGenerator
86
-
87
- def init_converter(properties={})
88
- @pi = 'perl'
89
- super(properties)
90
- end
91
-
92
- end
93
-
94
-
95
- end
@@ -1,99 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/engine'
7
- require 'erubis/enhancer'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- module PhpGenerator
14
- include Generator
15
-
16
- def self.supported_properties() # :nodoc:
17
- return []
18
- end
19
-
20
- def init_generator(properties={})
21
- super
22
- @escapefunc ||= 'htmlspecialchars'
23
- end
24
-
25
- def add_preamble(src)
26
- # empty
27
- end
28
-
29
- def escape_text(text)
30
- return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
31
- end
32
-
33
- def add_text(src, text)
34
- src << escape_text(text)
35
- end
36
-
37
- def add_expr_literal(src, code)
38
- code.strip!
39
- src << "<?php echo #{code}; ?>"
40
- end
41
-
42
- def add_expr_escaped(src, code)
43
- add_expr_literal(src, escaped_expr(code))
44
- end
45
-
46
- def add_expr_debug(src, code)
47
- code.strip!
48
- s = code.gsub(/\'/, "\\'")
49
- src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
50
- end
51
-
52
- def add_stmt(src, code)
53
- src << "<?php"
54
- src << " " if code[0] != ?\ #
55
- if code[-1] == ?\n
56
- code.chomp!
57
- src << code << "?>\n"
58
- else
59
- src << code << "?>"
60
- end
61
- end
62
-
63
- def add_postamble(src)
64
- # empty
65
- end
66
-
67
- end
68
-
69
-
70
- ##
71
- ## engine for PHP
72
- ##
73
- class Ephp < Basic::Engine
74
- include PhpGenerator
75
- end
76
-
77
-
78
- class EscapedEphp < Ephp
79
- include EscapeEnhancer
80
- end
81
-
82
-
83
- #class XmlEphp < Ephp
84
- # include EscapeEnhancer
85
- #end
86
-
87
-
88
- class PI::Ephp < PI::Engine
89
- include PhpGenerator
90
-
91
- def init_converter(properties={})
92
- @pi = 'php'
93
- super(properties)
94
- end
95
-
96
- end
97
-
98
-
99
- end
@@ -1,125 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/engine'
7
- require 'erubis/enhancer'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- ##
14
- ## code generator for Ruby
15
- ##
16
- module RubyGenerator
17
- include Generator
18
- #include ArrayBufferEnhancer
19
- include StringBufferEnhancer
20
-
21
- def init_generator(properties={})
22
- super
23
- @escapefunc ||= "Erubis::XmlHelper.escape_xml"
24
- @bufvar = properties[:bufvar] || "_buf"
25
- end
26
-
27
- def self.supported_properties() # :nodoc:
28
- return []
29
- end
30
-
31
- def escape_text(text)
32
- text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
33
- end
34
-
35
- def escaped_expr(code)
36
- return "#{@escapefunc}(#{code})"
37
- end
38
-
39
- #--
40
- #def add_preamble(src)
41
- # src << "#{@bufvar} = [];"
42
- #end
43
- #++
44
-
45
- def add_text(src, text)
46
- src << " #{@bufvar} << '" << escape_text(text) << "';" unless text.empty?
47
- end
48
-
49
- def add_stmt(src, code)
50
- #src << code << ';'
51
- src << code
52
- src << ';' unless code[-1] == ?\n
53
- end
54
-
55
- def add_expr_literal(src, code)
56
- src << " #{@bufvar} << (" << code << ').to_s;'
57
- end
58
-
59
- def add_expr_escaped(src, code)
60
- src << " #{@bufvar} << " << escaped_expr(code) << ';'
61
- end
62
-
63
- def add_expr_debug(src, code)
64
- code.strip!
65
- s = (code.dump =~ /\A"(.*)"\z/) && $1
66
- src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
67
- end
68
-
69
- #--
70
- #def add_postamble(src)
71
- # src << "\n#{@bufvar}.join\n"
72
- #end
73
- #++
74
-
75
- end
76
-
77
-
78
- ##
79
- ## engine for Ruby
80
- ##
81
- class Eruby < Basic::Engine
82
- include RubyEvaluator
83
- include RubyGenerator
84
- end
85
-
86
-
87
- ##
88
- ## fast engine for Ruby
89
- ##
90
- class FastEruby < Eruby
91
- include InterpolationEnhancer
92
- end
93
-
94
-
95
- ##
96
- ## swtich '<%= %>' to escaped and '<%== %>' to not escaped
97
- ##
98
- class EscapedEruby < Eruby
99
- include EscapeEnhancer
100
- end
101
-
102
-
103
- ##
104
- ## sanitize expression (<%= ... %>) by default
105
- ##
106
- ## this is equivalent to EscapedEruby and is prepared only for compatibility.
107
- ##
108
- class XmlEruby < Eruby
109
- include EscapeEnhancer
110
- end
111
-
112
-
113
- class PI::Eruby < PI::Engine
114
- include RubyEvaluator
115
- include RubyGenerator
116
-
117
- def init_converter(properties={})
118
- @pi = 'rb'
119
- super(properties)
120
- end
121
-
122
- end
123
-
124
-
125
- end
@@ -1,114 +0,0 @@
1
- ##
2
- ## $Release: 2.7.0 $
3
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
- ##
5
-
6
- require 'erubis/engine'
7
- require 'erubis/enhancer'
8
-
9
-
10
- module Erubis
11
-
12
-
13
- module SchemeGenerator
14
- include Generator
15
-
16
- def self.supported_properties() # :nodoc:
17
- return [
18
- [:func, '_add', "function name (ex. 'display')"],
19
- ]
20
- end
21
-
22
- def init_generator(properties={})
23
- super
24
- @escapefunc ||= 'escape'
25
- @func = properties[:func] || '_add' # or 'display'
26
- end
27
-
28
- def add_preamble(src)
29
- return unless @func == '_add'
30
- src << "(let ((_buf '())) " + \
31
- "(define (_add x) (set! _buf (cons x _buf))) "
32
- #src << "(let* ((_buf '())" + \
33
- # " (_add (lambda (x) (set! _buf (cons x _buf))))) "
34
- end
35
-
36
- def escape_text(text)
37
- @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' }
38
- text.gsub!(/["\\]/) { |m| @table_[m] }
39
- return text
40
- end
41
-
42
- def escaped_expr(code)
43
- code.strip!
44
- return "(#{@escapefunc} #{code})"
45
- end
46
-
47
- def add_text(src, text)
48
- return if text.empty?
49
- t = escape_text(text)
50
- if t[-1] == ?\n
51
- t[-1, 1] = ''
52
- src << "(#{@func} \"" << t << "\\n\")\n"
53
- else
54
- src << "(#{@func} \"" << t << '")'
55
- end
56
- end
57
-
58
- def add_stmt(src, code)
59
- src << code
60
- end
61
-
62
- def add_expr_literal(src, code)
63
- code.strip!
64
- src << "(#{@func} #{code})"
65
- end
66
-
67
- def add_expr_escaped(src, code)
68
- add_expr_literal(src, escaped_expr(code))
69
- end
70
-
71
- def add_expr_debug(src, code)
72
- s = (code.strip! || code).gsub(/\"/, '\\"')
73
- src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")"
74
- end
75
-
76
- def add_postamble(src)
77
- return unless @func == '_add'
78
- src << "\n" unless src[-1] == ?\n
79
- src << " (reverse _buf))\n"
80
- end
81
-
82
- end
83
-
84
-
85
- ##
86
- ## engine for Scheme
87
- ##
88
- class Escheme < Basic::Engine
89
- include SchemeGenerator
90
- end
91
-
92
-
93
- class EscapedEscheme < Escheme
94
- include EscapeEnhancer
95
- end
96
-
97
-
98
- #class XmlEscheme < Escheme
99
- # include EscapeEnhancer
100
- #end
101
-
102
-
103
- class PI::Escheme < PI::Engine
104
- include SchemeGenerator
105
-
106
- def init_converter(properties={})
107
- @pi = 'scheme'
108
- super(properties)
109
- end
110
-
111
- end
112
-
113
-
114
- end