dryml 1.3.0.RC4 → 1.3.0.pre10
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.
- data/Rakefile +11 -6
- data/VERSION +1 -1
- data/dryml.gemspec +1 -3
- data/lib/dryml/dryml_builder.rb +2 -43
- data/lib/dryml/dryml_doc.rb +3 -12
- data/lib/dryml/dryml_generator.rb +0 -1
- data/lib/dryml/extensions/action_controller/dryml_methods.rb +8 -1
- data/lib/dryml/helper.rb +4 -4
- data/lib/dryml/part_context.rb +12 -12
- data/lib/dryml/railtie/page_tag_handler.rb +13 -0
- data/lib/dryml/railtie/page_tag_resolver.rb +5 -9
- data/lib/dryml/railtie.rb +0 -7
- data/lib/dryml/tag_parameters.rb +1 -1
- data/lib/dryml/taglib.rb +20 -33
- data/lib/dryml/template.rb +17 -22
- data/lib/dryml/template_environment.rb +16 -25
- data/lib/dryml.rb +248 -210
- data/taglibs/core.dryml +5 -15
- data/test/dryml.rdoctest +1 -1
- metadata +37 -9
- data/ext/mkrf_conf.rb +0 -9
data/lib/dryml.rb
CHANGED
@@ -4,234 +4,272 @@
|
|
4
4
|
# Copyright:: Copyright (c) 2008
|
5
5
|
# License:: Distributes under the same terms as Ruby
|
6
6
|
|
7
|
+
|
8
|
+
|
9
|
+
# gem dependencies
|
7
10
|
require 'hobo_support'
|
8
11
|
require 'action_pack'
|
9
|
-
require 'openssl'
|
10
12
|
|
11
|
-
ActiveSupport::Dependencies.autoload_paths |= [File.dirname(__FILE__)]
|
12
|
-
ActiveSupport::Dependencies.autoload_once_paths |= [File.dirname(__FILE__)]
|
13
|
+
ActiveSupport::Dependencies.autoload_paths |= [ File.dirname(__FILE__)]
|
13
14
|
|
14
15
|
# The Don't Repeat Yourself Markup Language
|
15
16
|
module Dryml
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
VERSION = File.read(File.expand_path('../../VERSION', __FILE__)).strip
|
19
|
+
@@root = Pathname.new File.expand_path(File.dirname(__FILE__) + "/..")
|
20
|
+
def self.root; @@root; end
|
20
21
|
|
21
|
-
|
22
|
+
class DrymlSyntaxError < RuntimeError; end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
class DrymlException < Exception
|
25
|
+
def initialize(message, path=nil, line_num=nil)
|
26
|
+
if path && line_num
|
27
|
+
super(message + " -- at #{path}:#{line_num}")
|
28
|
+
else
|
29
|
+
super(message)
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
33
|
+
|
34
|
+
TagDef = Struct.new "TagDef", :name, :attrs, :proc
|
35
|
+
|
36
|
+
RESERVED_WORDS = %w{if for while do class else elsif unless case when module in}
|
37
|
+
|
38
|
+
EMPTY_PAGE = "[tag-page]"
|
39
|
+
|
40
|
+
APPLICATION_TAGLIB = { :src => "taglibs/application" }
|
41
|
+
CORE_TAGLIB = { :src => "core", :plugin => "dryml" }
|
42
|
+
|
43
|
+
DEFAULT_IMPORTS = defined?(ApplicationHelper) ? [ApplicationHelper] : []
|
44
|
+
|
45
|
+
@renderer_classes = {}
|
46
|
+
@tag_page_renderer_classes = {}
|
47
|
+
|
48
|
+
extend self
|
49
|
+
|
50
|
+
attr_accessor :last_if
|
51
|
+
|
52
|
+
|
53
|
+
def precompile_taglibs
|
54
|
+
Dir.chdir(Rails.root) do
|
55
|
+
taglibs = Dir["vendor/plugins/**/taglibs/**/*.dryml"] + Dir["app/views/taglibs/**/*.dryml"]
|
56
|
+
taglibs.each do |f|
|
57
|
+
Dryml::Taglib.get(:template_dir => File.dirname(f), :src => File.basename(f).remove(".dryml"))
|
58
|
+
end
|
47
59
|
end
|
48
60
|
end
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
renderer = page_renderer(view, identifier, local_assigns.keys)
|
73
|
-
if identifier =~ /#{ID_SEPARATOR}/
|
74
|
-
tag_name = identifier.split(ID_SEPARATOR).last
|
75
|
-
renderer.render_tag(tag_name, {:with => this} )
|
76
|
-
else
|
61
|
+
|
62
|
+
|
63
|
+
def clear_cache
|
64
|
+
@renderer_classes = {}
|
65
|
+
@tag_page_renderer_classes = {}
|
66
|
+
end
|
67
|
+
|
68
|
+
def render_tag(view, tag, options={})
|
69
|
+
renderer = empty_page_renderer(view)
|
70
|
+
renderer.render_tag(tag, options)
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
def empty_page_renderer(view)
|
75
|
+
controller_name = view.controller.class.name.underscore.sub(/_controller$/, "")
|
76
|
+
page_renderer(view, [], "#{controller_name}/#{EMPTY_PAGE}")
|
77
|
+
end
|
78
|
+
|
79
|
+
def call_render(view, local_assigns, identifier)
|
80
|
+
page = view.request.fullpath
|
81
|
+
renderer = page_renderer(view, local_assigns.keys, page, identifier)
|
82
|
+
this = view.controller.send(:dryml_context) || local_assigns[:this]
|
83
|
+
view.instance_variable_set("@this", this)
|
77
84
|
renderer.render_page(this, local_assigns).strip
|
78
85
|
end
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
@
|
86
|
+
|
87
|
+
|
88
|
+
def page_renderer(view, local_names=[], page=nil, filename=nil)
|
89
|
+
if Rails.env.development?
|
90
|
+
clear_cache
|
91
|
+
Taglib.clear_cache
|
92
|
+
end
|
93
|
+
|
94
|
+
prepare_view!(view)
|
95
|
+
included_taglibs = ([APPLICATION_TAGLIB] + application_taglibs() + [subsite_taglib(page)] + controller_taglibs(view.controller.class)).compact
|
96
|
+
|
97
|
+
if page.ends_with?(EMPTY_PAGE)
|
98
|
+
controller_class = view.controller.class
|
99
|
+
@tag_page_renderer_classes[controller_class.name] ||=
|
100
|
+
make_renderer_class("", page, local_names, DEFAULT_IMPORTS, included_taglibs)
|
101
|
+
@tag_page_renderer_classes[controller_class.name].new(page, view)
|
102
|
+
else
|
103
|
+
mtime = File.mtime(filename)
|
104
|
+
renderer_class = @renderer_classes[page]
|
105
|
+
|
106
|
+
# do we need to recompile?
|
107
|
+
if (!renderer_class || # nothing cached?
|
108
|
+
(local_names - renderer_class.compiled_local_names).any? || # any new local names?
|
109
|
+
renderer_class.load_time < mtime) # cache out of date?
|
110
|
+
renderer_class = make_renderer_class(File.read(filename), filename, local_names,
|
111
|
+
DEFAULT_IMPORTS, included_taglibs)
|
112
|
+
renderer_class.load_time = mtime
|
113
|
+
@renderer_classes[page] = renderer_class
|
114
|
+
end
|
115
|
+
renderer_class.new(page, view)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def controller_taglibs(controller_class)
|
120
|
+
controller_class.try.included_taglibs || []
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
def subsite_taglib(page)
|
125
|
+
parts = page.split("/")
|
126
|
+
subsite = parts.length >= 3 ? parts[0..-3].join('_') : "front"
|
127
|
+
src = "taglibs/#{subsite}_site"
|
128
|
+
{ :src => src } if Object.const_defined?(:Rails) && File.exists?("#{Rails.root}/app/views/#{src}.dryml")
|
129
|
+
end
|
130
|
+
|
131
|
+
def application_taglibs
|
132
|
+
Dir.chdir(Rails.root) do
|
133
|
+
Dir["app/views/taglibs/application/**/*.dryml"].map{|f| File.basename f, '.dryml'}.map do |n|
|
134
|
+
{ :src => "taglibs/application/#{n}" }
|
135
|
+
end
|
98
136
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
end
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
subsite_taglibs(controller_path) +
|
187
|
-
((controller_path.camelize+"Controller").constantize.try.included_taglibs||[])
|
188
|
-
).compact
|
189
|
-
end
|
190
|
-
|
191
|
-
def subsite_taglibs(controller_path)
|
192
|
-
parts = controller_path.split("/")
|
193
|
-
subsite = parts.length >= 2 ? parts[0..-2].join('_') : "front"
|
194
|
-
src = "taglibs/#{subsite}_site"
|
195
|
-
Object.const_defined?(:Rails) && File.exists?("#{Rails.root}/app/views/#{src}.dryml") ?
|
196
|
-
taglibs_in_dir("#{subsite}_site").unshift({ :src => src }) : []
|
197
|
-
end
|
198
|
-
|
199
|
-
def taglibs_in_dir(dir_name)
|
200
|
-
Dir.chdir(Rails.root) do
|
201
|
-
Dir["app/views/taglibs/#{dir_name}/**/*.dryml"].map{|f| File.basename f, '.dryml'}.map do |n|
|
202
|
-
{ :src => "taglibs/#{dir_name}/#{n}" }
|
137
|
+
end
|
138
|
+
|
139
|
+
def get_field(object, field)
|
140
|
+
return nil if object.nil?
|
141
|
+
field_str = field.to_s
|
142
|
+
begin
|
143
|
+
return object.send(field_str)
|
144
|
+
rescue NoMethodError => ex
|
145
|
+
if field_str =~ /^\d+$/
|
146
|
+
return object[field.to_i]
|
147
|
+
else
|
148
|
+
return object[field]
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
def get_field_path(object, path)
|
155
|
+
path = if path.is_a? String
|
156
|
+
path.split('.')
|
157
|
+
else
|
158
|
+
Array(path)
|
159
|
+
end
|
160
|
+
|
161
|
+
parent = nil
|
162
|
+
path.each do |field|
|
163
|
+
return nil if object.nil?
|
164
|
+
parent = object
|
165
|
+
object = get_field(parent, field)
|
166
|
+
end
|
167
|
+
[parent, path.last, object]
|
168
|
+
end
|
169
|
+
|
170
|
+
|
171
|
+
def prepare_view!(view)
|
172
|
+
# Not sure why this isn't done for me...
|
173
|
+
# There's probably a button to press round here somewhere
|
174
|
+
for var in %w(@flash @cookies @action_name @_session @_request @request_origin
|
175
|
+
@template @request @ignore_missing_templates @_headers @variables_added
|
176
|
+
@_flash @response @template_class
|
177
|
+
@_cookies @before_filter_chain_aborted @url
|
178
|
+
@_response @template_root @headers @_params @params @session)
|
179
|
+
unless @view.instance_variables.include?(var)
|
180
|
+
view.instance_variable_set(var, view.controller.instance_variable_get(var))
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
# create and compile a renderer class (AKA Dryml::Template::Environment)
|
186
|
+
#
|
187
|
+
# template_src:: the DRYML source
|
188
|
+
# template_path:: the filename of the source. This is used for
|
189
|
+
# caching
|
190
|
+
# locals:: local variables.
|
191
|
+
# imports:: A list of helper modules to import. For example, Hobo
|
192
|
+
# uses [Hobo::Helper, Hobo::Helper::Translations,
|
193
|
+
# ApplicationHelper]
|
194
|
+
# included_taglibs:: A list of Taglibs to include. { :src =>
|
195
|
+
# "core", :plugin => "dryml" } is automatically
|
196
|
+
# added to this list.
|
197
|
+
#
|
198
|
+
def make_renderer_class(template_src, template_path, locals=[], imports=[], included_taglibs=[])
|
199
|
+
renderer_class = Class.new(TemplateEnvironment)
|
200
|
+
compile_renderer_class(renderer_class, template_src, template_path, locals, imports, included_taglibs)
|
201
|
+
renderer_class
|
202
|
+
end
|
203
|
+
|
204
|
+
|
205
|
+
def compile_renderer_class(renderer_class, template_src, template_path, locals, imports, included_taglibs=[])
|
206
|
+
template = Dryml::Template.new(template_src, renderer_class, template_path)
|
207
|
+
imports.each {|m| template.import_module(m)}
|
208
|
+
|
209
|
+
taglibs = [CORE_TAGLIB] + included_taglibs
|
210
|
+
|
211
|
+
# the sum of all the names we've seen so far - eventually we'll be ready for all of 'em
|
212
|
+
all_local_names = renderer_class.compiled_local_names | locals
|
213
|
+
|
214
|
+
template.compile(all_local_names, taglibs)
|
215
|
+
end
|
216
|
+
|
217
|
+
|
218
|
+
def unreserve(word)
|
219
|
+
word = word.to_s
|
220
|
+
if RESERVED_WORDS.include?(word)
|
221
|
+
word + "_"
|
222
|
+
else
|
223
|
+
word
|
203
224
|
end
|
204
225
|
end
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
#
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
226
|
+
|
227
|
+
|
228
|
+
def static_tags
|
229
|
+
@static_tags ||= begin
|
230
|
+
path = if Object.const_defined?(:Rails) && FileTest.exists?("#{Rails.root}/config/dryml_static_tags.txt")
|
231
|
+
"#{Rails.root}/config/dryml_static_tags.txt"
|
232
|
+
else
|
233
|
+
File.join(File.dirname(__FILE__), "dryml/static_tags")
|
234
|
+
end
|
235
|
+
File.readlines(path).*.chop
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
attr_writer :static_tags
|
240
|
+
|
241
|
+
# Helper function for use outside Hobo/Rails
|
242
|
+
#
|
243
|
+
# Pass the template context in locals[:this]
|
244
|
+
#
|
245
|
+
# This function caches. If the mtime of template_path is older
|
246
|
+
# than the last compilation time, the cached version will be
|
247
|
+
# used. If no template_path is given, template_src is used as the
|
248
|
+
# key to the cache.
|
249
|
+
#
|
250
|
+
# If a local variable is not present when the template is
|
251
|
+
# compiled, it will be ignored when the template is used. In
|
252
|
+
# other words, the variable values may change, but the names may
|
253
|
+
# not.
|
254
|
+
#
|
255
|
+
# included_taglibs is only used during template compilation.
|
256
|
+
#
|
257
|
+
# @param [String] template_src the DRYML source
|
258
|
+
# @param [Hash] locals local variables.
|
259
|
+
# @param [String, nil] template_path the filename of the source.
|
260
|
+
# @param [Array] included_taglibs A list of Taglibs to include. { :src =>
|
261
|
+
# "core", :plugin => "dryml" } is automatically
|
262
|
+
# added to this list.
|
263
|
+
# @param [ActionView::Base] view an ActionView instance
|
264
|
+
def render(template_src, locals={}, template_path=nil, included_taglibs=[], view=nil)
|
265
|
+
template_path ||= template_src
|
266
|
+
view ||= ActionView::Base.new(ActionController::Base.view_paths, {})
|
267
|
+
this = locals.delete(:this) || nil
|
268
|
+
|
269
|
+
renderer_class = Dryml::Template.build_cache[template_path]._?.environment ||
|
270
|
+
Dryml.make_renderer_class(template_src, template_path, locals.keys)
|
271
|
+
renderer_class.new(template_path, view).render_page(this, locals)
|
272
|
+
end
|
235
273
|
|
236
274
|
end
|
237
275
|
|
data/taglibs/core.dryml
CHANGED
@@ -4,9 +4,7 @@
|
|
4
4
|
It's the DRYML equivalent of Ruby's `send` method.
|
5
5
|
-->
|
6
6
|
<def tag="call-tag" attrs="tag">
|
7
|
-
<%=
|
8
|
-
content_tag(tag, parameters.default, attributes) :
|
9
|
-
send(tag.gsub('-', '_'), attributes, parameters) %>
|
7
|
+
<%= send(tag.gsub('-', '_'), attributes, parameters) %>
|
10
8
|
</def>
|
11
9
|
|
12
10
|
|
@@ -23,15 +21,7 @@ For example, you might want to wrap an `<img>` tag in an `<a>` tag but only unde
|
|
23
21
|
-->
|
24
22
|
<def tag="wrap" attrs="tag, when, parameter">
|
25
23
|
<% parameter ||= :default %>
|
26
|
-
<%=
|
27
|
-
if Dryml.static_tags.include?(tag)
|
28
|
-
content_tag(tag, parameters.default, attributes)
|
29
|
-
else
|
30
|
-
send(tag.gsub('-', '_'), attributes, { parameter.to_sym => parameters[:default] })
|
31
|
-
end
|
32
|
-
else
|
33
|
-
parameters.default
|
34
|
-
end %>
|
24
|
+
<%= when_ ? send(tag, attributes, { parameter.to_sym => parameters[:default] }) : parameters.default %>
|
35
25
|
</def>
|
36
26
|
|
37
27
|
|
@@ -71,10 +61,10 @@ For example, you might want to wrap an `<img>` tag in an `<a>` tag but only unde
|
|
71
61
|
|
72
62
|
### Usage
|
73
63
|
|
74
|
-
<if test="¤t_user.
|
64
|
+
<if test="¤t_user.administrtator?">Logged in as administrator</if>
|
75
65
|
<else>Logged in as normal user</else>
|
76
|
-
|
77
|
-
**IMPORTANT NOTE**: `<if>` tests for non-blank vs. blank (as defined by
|
66
|
+
|
67
|
+
**IMPORTANT NOTE**: `<if>` tests for non-blank vs. blank (as defined by ActiveSuport), not true vs. false.
|
78
68
|
|
79
69
|
If you do not give the `test` attribute, uses the current context instead. This allows a nice trick like this:
|
80
70
|
|
data/test/dryml.rdoctest
CHANGED
metadata
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dryml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: -1637175975
|
5
|
+
prerelease: true
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
- pre10
|
11
|
+
version: 1.3.0.pre10
|
6
12
|
platform: ruby
|
7
13
|
authors:
|
8
14
|
- Tom Locke
|
@@ -10,7 +16,7 @@ autorequire:
|
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date:
|
19
|
+
date: 2010-10-10 00:00:00 -04:00
|
14
20
|
default_executable:
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
@@ -19,8 +25,13 @@ dependencies:
|
|
19
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
26
|
none: false
|
21
27
|
requirements:
|
22
|
-
- -
|
28
|
+
- - ">="
|
23
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 7
|
31
|
+
segments:
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
- 0
|
24
35
|
version: 3.0.0
|
25
36
|
type: :runtime
|
26
37
|
version_requirements: *id001
|
@@ -32,7 +43,13 @@ dependencies:
|
|
32
43
|
requirements:
|
33
44
|
- - "="
|
34
45
|
- !ruby/object:Gem::Version
|
35
|
-
|
46
|
+
hash: -1637175975
|
47
|
+
segments:
|
48
|
+
- 1
|
49
|
+
- 3
|
50
|
+
- 0
|
51
|
+
- pre10
|
52
|
+
version: 1.3.0.pre10
|
36
53
|
type: :runtime
|
37
54
|
version_requirements: *id002
|
38
55
|
- !ruby/object:Gem::Dependency
|
@@ -43,6 +60,9 @@ dependencies:
|
|
43
60
|
requirements:
|
44
61
|
- - ">="
|
45
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
46
66
|
version: "0"
|
47
67
|
type: :development
|
48
68
|
version_requirements: *id003
|
@@ -50,8 +70,8 @@ description: The Don't Repeat Yourself Markup Language
|
|
50
70
|
email: tom@tomlocke.com
|
51
71
|
executables: []
|
52
72
|
|
53
|
-
extensions:
|
54
|
-
|
73
|
+
extensions: []
|
74
|
+
|
55
75
|
extra_rdoc_files: []
|
56
76
|
|
57
77
|
files:
|
@@ -62,7 +82,6 @@ files:
|
|
62
82
|
- TODO.txt
|
63
83
|
- VERSION
|
64
84
|
- dryml.gemspec
|
65
|
-
- ext/mkrf_conf.rb
|
66
85
|
- lib/dryml.rb
|
67
86
|
- lib/dryml/dryml_builder.rb
|
68
87
|
- lib/dryml/dryml_doc.rb
|
@@ -80,6 +99,7 @@ files:
|
|
80
99
|
- lib/dryml/parser/tree_parser.rb
|
81
100
|
- lib/dryml/part_context.rb
|
82
101
|
- lib/dryml/railtie.rb
|
102
|
+
- lib/dryml/railtie/page_tag_handler.rb
|
83
103
|
- lib/dryml/railtie/page_tag_resolver.rb
|
84
104
|
- lib/dryml/railtie/template_handler.rb
|
85
105
|
- lib/dryml/scoped_variables.rb
|
@@ -104,17 +124,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
124
|
requirements:
|
105
125
|
- - ">="
|
106
126
|
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
107
130
|
version: "0"
|
108
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
132
|
none: false
|
110
133
|
requirements:
|
111
134
|
- - ">="
|
112
135
|
- !ruby/object:Gem::Version
|
136
|
+
hash: 23
|
137
|
+
segments:
|
138
|
+
- 1
|
139
|
+
- 3
|
140
|
+
- 6
|
113
141
|
version: 1.3.6
|
114
142
|
requirements: []
|
115
143
|
|
116
144
|
rubyforge_project: hobo
|
117
|
-
rubygems_version: 1.
|
145
|
+
rubygems_version: 1.3.7
|
118
146
|
signing_key:
|
119
147
|
specification_version: 3
|
120
148
|
summary: The Don't Repeat Yourself Markup Language
|
data/ext/mkrf_conf.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
# the whole reason this file exists: to return an error if openssl
|
4
|
-
# isn't installed.
|
5
|
-
require 'openssl'
|
6
|
-
|
7
|
-
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
|
8
|
-
f.write("task :default\n")
|
9
|
-
f.close
|