erbside 0.1.0 → 0.2.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.
- data/.gemspec +152 -0
- data/.gitignore +8 -0
- data/.ruby +48 -0
- data/.yardopts +6 -0
- data/{HISTORY → HISTORY.rdoc} +0 -0
- data/MANIFEST +33 -0
- data/NOTICE.rdoc +32 -0
- data/PROFILE +6 -3
- data/README.rdoc +76 -0
- data/VERSION +1 -1
- data/lib/erbside.rb +6 -2
- data/lib/erbside/context.rb +3 -3
- data/lib/erbside/gemspec.rb +19 -0
- data/lib/erbside/inline.rb +8 -5
- data/lib/erbside/inline/cpp.rb +7 -0
- data/lib/erbside/inline/css.rb +7 -0
- data/lib/erbside/inline/js.rb +7 -0
- data/lib/erbside/metadata.rb +86 -50
- data/lib/erbside/runner.rb +14 -5
- data/main.assembly +56 -0
- data/{test/functional → qed}/applique/env.rb +0 -0
- data/{test/functional → qed}/bash.rdoc +0 -0
- data/{test/functional → qed}/cli.rdoc +0 -0
- data/{test/functional → qed}/cpp.rdoc +0 -0
- data/{test/functional → qed}/css.rdoc +0 -0
- data/{test/functional → qed}/javascript.rdoc +0 -0
- data/{test/functional → qed}/ruby.rdoc +0 -0
- data/{test/functional → qed}/sgml.rdoc +0 -0
- data/site/.htaccess +2 -0
- data/site/.rsync-filter +7 -0
- data/site/assets/css/highlight.css +96 -0
- data/site/assets/css/reset.css +19 -0
- data/site/assets/css/site.css +52 -0
- data/site/assets/img/curb.jpg +0 -0
- data/site/assets/img/emeraled.png +0 -0
- data/site/assets/img/fade.png +0 -0
- data/site/assets/img/fork-me.png +0 -0
- data/site/assets/img/icon.jpg +0 -0
- data/site/assets/js/highlight.js +1 -0
- data/site/assets/js/jquery.js +19 -0
- data/site/assets/js/jquery.tabs.js +1 -0
- data/site/index.html +229 -0
- data/test/{unit/fixture → fixture}/inline.rb +3 -3
- data/test/{unit/fixture → fixture}/inline_complex.rb +0 -0
- data/test/inline_test.rb +15 -0
- data/work/defunct/css/color.css +45 -0
- data/work/defunct/css/font.css +39 -0
- data/work/defunct/css/struct.css +51 -0
- data/work/defunct/inline-old/bash.rb +36 -0
- data/work/defunct/inline-old/cpp.rb +39 -0
- data/work/defunct/inline-old/css.rb +32 -0
- data/work/defunct/inline-old/html.rb +32 -0
- data/work/defunct/inline-old/js.rb +85 -0
- data/work/defunct/inline-old/ruby.rb +147 -0
- data/work/defunct/inline-old/type.rb +91 -0
- data/work/defunct/inline.rb +202 -0
- data/work/defunct/plan.rb +37 -0
- data/work/defunct/tiller.rb +200 -0
- data/work/defunct/webme/options.yml +4 -0
- data/work/defunct/whole.rb +221 -0
- data/{lib → work}/plugins/syckle/erbside.rb +0 -0
- data/work/radio_earth.jpg +0 -0
- data/yard.watchr +12 -0
- metadata +94 -50
- data/LICENSE +0 -206
- data/README +0 -88
- data/test/unit/inline_test.rb +0 -14
@@ -0,0 +1,19 @@
|
|
1
|
+
begin
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
module Gem
|
5
|
+
class Specification
|
6
|
+
|
7
|
+
def [](k); send(k); end
|
8
|
+
|
9
|
+
def to_h
|
10
|
+
instance_variables.inject({}) do |h,k|
|
11
|
+
h[k.sub('@','')] = instance_variable_get(k); h
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
rescue LoadError
|
19
|
+
end
|
data/lib/erbside/inline.rb
CHANGED
@@ -31,7 +31,10 @@ module Erbside
|
|
31
31
|
register << base
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
#
|
35
|
+
def self.extensions
|
36
|
+
raise NotImplementedError
|
37
|
+
end
|
35
38
|
|
36
39
|
#
|
37
40
|
def self.extension_list
|
@@ -76,11 +79,11 @@ module Erbside
|
|
76
79
|
# I N I T I A L I Z E
|
77
80
|
|
78
81
|
#
|
79
|
-
def initialize(file)
|
82
|
+
def initialize(file, *resources)
|
80
83
|
@file = Pathname.new(file)
|
81
84
|
@type = @file.extname
|
82
85
|
|
83
|
-
@context = Context.new(@file)
|
86
|
+
@context = Context.new(@file, resources)
|
84
87
|
end
|
85
88
|
|
86
89
|
#
|
@@ -139,12 +142,12 @@ module Erbside
|
|
139
142
|
|
140
143
|
#
|
141
144
|
def remarker
|
142
|
-
raise
|
145
|
+
raise NotImplementedError
|
143
146
|
end
|
144
147
|
|
145
148
|
#
|
146
149
|
def remarker_multiline
|
147
|
-
raise
|
150
|
+
raise NotImplementedError
|
148
151
|
end
|
149
152
|
|
150
153
|
#
|
data/lib/erbside/inline/cpp.rb
CHANGED
data/lib/erbside/inline/css.rb
CHANGED
data/lib/erbside/inline/js.rb
CHANGED
data/lib/erbside/metadata.rb
CHANGED
@@ -1,79 +1,122 @@
|
|
1
|
+
begin require 'dotruby' rescue LoadError end
|
2
|
+
|
3
|
+
#require 'facets/ostruct'
|
4
|
+
|
1
5
|
module Erbside
|
2
6
|
|
3
7
|
# Metadata belongs to the project being scaffold.
|
4
8
|
#
|
5
|
-
# TODO: Support POM::Metadata
|
6
|
-
#
|
7
9
|
class Metadata
|
8
10
|
|
9
|
-
#
|
11
|
+
# Canonical metadata file.
|
12
|
+
CANONICAL_FILENAME = '.ruby'
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
14
|
+
# Root directory is indicated by the presence of a +meta/+ directory,
|
15
|
+
# or +.meta/+ hidden directory.
|
16
|
+
ROOT_INDICATORS = [ "{#{CANONICAL_FILENAME},meta/,.meta/}" ]
|
15
17
|
|
16
18
|
# Project root pathname.
|
17
19
|
attr :root
|
18
20
|
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
# Data resources.
|
22
|
+
attr :resources
|
23
|
+
|
24
|
+
# Construct new Metadata object.
|
25
|
+
def initialize(resources, options={})
|
26
|
+
@root = self.class.root(options[:root]) || Dir.pwd
|
27
|
+
@data = []
|
28
|
+
|
29
|
+
@resources = resources
|
30
|
+
@resources << '.ruby' if canonical?
|
31
|
+
|
32
|
+
@resources.each do |source|
|
33
|
+
case File.basename(source)
|
34
|
+
when CANONICAL_FILENAME
|
35
|
+
if canonical?
|
36
|
+
if defined?(::DotRuby)
|
37
|
+
@data << DotRuby::Spec.find(root) #(CANONICAL_FILENAME)
|
38
|
+
else
|
39
|
+
@data << YAML.load_file(canonical_file)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
when /\.gemspec$/
|
43
|
+
require 'erbside/gemspec'
|
44
|
+
@data << ::Gem::Specification.load(source)
|
45
|
+
when /\.ya?ml$/
|
46
|
+
@data << YAML.load_file(source)
|
47
|
+
else
|
48
|
+
if File.directory?(source)
|
49
|
+
@data << load_metadir(source)
|
50
|
+
else
|
51
|
+
# now what ?
|
52
|
+
end
|
53
|
+
end
|
27
54
|
end
|
28
55
|
|
29
|
-
@cache
|
56
|
+
@cache = {}
|
57
|
+
end
|
30
58
|
|
31
|
-
|
59
|
+
# If method is missing, check the POM and metadata cache.
|
60
|
+
def method_missing(name, *args)
|
61
|
+
return super unless args.empty?
|
62
|
+
self[name]
|
32
63
|
end
|
33
64
|
|
34
|
-
#
|
35
|
-
def
|
36
|
-
|
37
|
-
if @
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
@cache.key?(s.to_s) ? @cache[s.to_s] : nil
|
42
|
-
end
|
43
|
-
else
|
44
|
-
@cache.key?(s.to_s) ? @cache[s.to_s] : nil
|
65
|
+
# Lookup metadata entry.
|
66
|
+
def [](name)
|
67
|
+
name, value = name.to_s, nil
|
68
|
+
return @cache[name] if @cache.key?(name)
|
69
|
+
begin
|
70
|
+
@data.find{ |d| value = d[name] }
|
71
|
+
rescue
|
45
72
|
end
|
73
|
+
@cache[name] = value
|
46
74
|
end
|
47
75
|
|
48
76
|
# Provide metadata to hash. Some (stencil) template systems
|
49
77
|
# need the data in hash form.
|
50
|
-
|
51
78
|
def to_h
|
52
|
-
|
53
|
-
@pom.to_h
|
54
|
-
else
|
55
|
-
@cache
|
56
|
-
end
|
79
|
+
@data.reverse.inject({}){ |h,d| h.merge(d.to_h) }
|
57
80
|
end
|
58
81
|
|
59
82
|
private
|
60
83
|
|
61
|
-
|
84
|
+
def canonical_file
|
85
|
+
File.join(root, CANONICAL_FILENAME)
|
86
|
+
end
|
62
87
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
val = YAML.load(val) if val =~ /\A---/
|
67
|
-
@cache[File.basename(f)] = val
|
68
|
-
end
|
88
|
+
#
|
89
|
+
def canonical?
|
90
|
+
File.exist?(canonical_file)
|
69
91
|
end
|
70
92
|
|
71
|
-
#
|
93
|
+
# Load metadata cache. This serves as the fallback for the POM.
|
94
|
+
def load_metadir(dir=nil)
|
95
|
+
data = {}
|
96
|
+
Dir[File.join(dir || metadir, '*')].each do |file|
|
97
|
+
next unless File.file?(file)
|
98
|
+
|
99
|
+
case File.extname(file)
|
100
|
+
when '.yaml'
|
101
|
+
val = YAML.load(File.new(file))
|
102
|
+
data.merge!(val)
|
103
|
+
when ''
|
104
|
+
val = File.read(file).strip
|
105
|
+
val = YAML.load(val) if val =~ /\A---/
|
106
|
+
data[File.basename(file)] = val
|
107
|
+
else
|
108
|
+
# ignore
|
109
|
+
end
|
110
|
+
end
|
111
|
+
data
|
112
|
+
end
|
72
113
|
|
114
|
+
# What is project root's meta directory?
|
73
115
|
def metadir
|
74
|
-
@metadir ||= Dir[File.join(root, '{
|
116
|
+
@metadir ||= Dir[File.join(root, '{meta,.meta}/')].first || 'meta/'
|
75
117
|
end
|
76
118
|
|
119
|
+
#
|
77
120
|
#def load_value(name)
|
78
121
|
# file = File.join(metadir, name)
|
79
122
|
# file = Dir[file].first
|
@@ -83,15 +126,9 @@ module Erbside
|
|
83
126
|
# end
|
84
127
|
#end
|
85
128
|
|
86
|
-
# Root directory is indicated by the presence of a +meta/+ directory,
|
87
|
-
# or +.meta/+ hidden directory.
|
88
|
-
|
89
|
-
ROOT_INDICATORS = [ '{.meta,meta}/' ]
|
90
|
-
|
91
129
|
# Locate the project's root directory. This is determined
|
92
130
|
# by ascending up the directory tree from the current position
|
93
131
|
# until the ROOT_INDICATORS is matched. Returns +nil+ if not found.
|
94
|
-
|
95
132
|
def self.root(local=Dir.pwd)
|
96
133
|
local ||= Dir.pwd
|
97
134
|
Dir.chdir(local) do
|
@@ -119,4 +156,3 @@ module Erbside
|
|
119
156
|
end
|
120
157
|
|
121
158
|
end
|
122
|
-
|
data/lib/erbside/runner.rb
CHANGED
@@ -24,6 +24,9 @@ module Erbside
|
|
24
24
|
|
25
25
|
#attr_accessor :delete
|
26
26
|
|
27
|
+
#
|
28
|
+
attr_accessor :resources
|
29
|
+
|
27
30
|
|
28
31
|
# I N I T I A L I Z E
|
29
32
|
|
@@ -39,12 +42,18 @@ module Erbside
|
|
39
42
|
end.flatten
|
40
43
|
@files = files
|
41
44
|
|
42
|
-
@force
|
43
|
-
@skip
|
44
|
-
@output
|
45
|
-
#@delete
|
45
|
+
@force = options[:force]
|
46
|
+
@skip = options[:skip]
|
47
|
+
@output = options[:output]
|
48
|
+
#@delete = options[:delete]
|
49
|
+
@resources = options[:resources]
|
46
50
|
end
|
47
51
|
|
52
|
+
#
|
53
|
+
#def metadata
|
54
|
+
# @metadata ||= Metadata.new(*resources)
|
55
|
+
#end
|
56
|
+
|
48
57
|
#
|
49
58
|
def collect_usable_files(dir)
|
50
59
|
Dir[File.join(dir,"**/*#{ext_glob}")]
|
@@ -73,7 +82,7 @@ module Erbside
|
|
73
82
|
return
|
74
83
|
end
|
75
84
|
|
76
|
-
template = parser.new(file)
|
85
|
+
template = parser.new(file, *resources)
|
77
86
|
|
78
87
|
if template.exist? && skip?
|
79
88
|
puts " #{template.relative_output} skipped"
|
data/main.assembly
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
email:
|
3
|
+
service: Email
|
4
|
+
mailto: transfire@gmail.com
|
5
|
+
|
6
|
+
github:
|
7
|
+
active: true
|
8
|
+
|
9
|
+
gem:
|
10
|
+
active: true
|
11
|
+
|
12
|
+
qed:
|
13
|
+
active : false
|
14
|
+
|
15
|
+
#erbside:
|
16
|
+
# service : Custom
|
17
|
+
# pipeline: main
|
18
|
+
# generate: |
|
19
|
+
# sh 'erbside lib/erbside.rb'
|
20
|
+
# active: false
|
21
|
+
|
22
|
+
#erbside:
|
23
|
+
# service: erbside
|
24
|
+
# active: false
|
25
|
+
|
26
|
+
dnote:
|
27
|
+
service: DNote
|
28
|
+
output: log/DNOTES.rdoc
|
29
|
+
active: true
|
30
|
+
|
31
|
+
yard:
|
32
|
+
yardopts: true
|
33
|
+
active: false
|
34
|
+
|
35
|
+
ri:
|
36
|
+
output : .rdoc
|
37
|
+
include : lib
|
38
|
+
active : false
|
39
|
+
|
40
|
+
rdoc:
|
41
|
+
service : RDoc
|
42
|
+
template: spartacus
|
43
|
+
output : site/doc
|
44
|
+
title : Erbside
|
45
|
+
main : README.rdoc
|
46
|
+
extra : ""
|
47
|
+
include : ['lib', '[A-Z]*.*']
|
48
|
+
active : false
|
49
|
+
|
50
|
+
locat:
|
51
|
+
active: false
|
52
|
+
|
53
|
+
vclog:
|
54
|
+
service : VClog
|
55
|
+
active: false
|
56
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/site/.htaccess
ADDED
data/site/.rsync-filter
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
/* github.com style (c) Vasily Polovnyov <vast@whiteants.net> */
|
2
|
+
|
3
|
+
/* NOTE: This has been included in the rdoc.css stylesheet
|
4
|
+
rather then have it's own file simply b/c I have not
|
5
|
+
figured out how to utilize my own generator to be able
|
6
|
+
to copy additional files.
|
7
|
+
*/
|
8
|
+
|
9
|
+
pre code {
|
10
|
+
display: block;
|
11
|
+
color: #000;
|
12
|
+
background: #f8f8ff;
|
13
|
+
background: #eee;
|
14
|
+
-moz-border-radius: 10px;
|
15
|
+
border-radius: 10px;
|
16
|
+
}
|
17
|
+
|
18
|
+
code .comment, .template_comment, .diff .header, .javadoc {
|
19
|
+
color: #998;
|
20
|
+
font-style: italic
|
21
|
+
}
|
22
|
+
|
23
|
+
code .keyword, .css .rule .keyword, .winutils, .javascript .title, .lisp .title, .subst {
|
24
|
+
color: #000;
|
25
|
+
font-weight: bold
|
26
|
+
}
|
27
|
+
|
28
|
+
code .number, .hexcolor {
|
29
|
+
color: #40a070
|
30
|
+
}
|
31
|
+
|
32
|
+
code .string, .attribute .value, .phpdoc {
|
33
|
+
color: #d14
|
34
|
+
}
|
35
|
+
|
36
|
+
code .title, .id {
|
37
|
+
color: #900;
|
38
|
+
font-weight: bold
|
39
|
+
}
|
40
|
+
|
41
|
+
code .javascript .title, .lisp .title, .subst {
|
42
|
+
font-weight: normal
|
43
|
+
}
|
44
|
+
|
45
|
+
code .class .title {
|
46
|
+
color: #458;
|
47
|
+
font-weight: bold
|
48
|
+
}
|
49
|
+
|
50
|
+
code .tag, .css .keyword, .html .keyword, .tag .title, .django .tag .keyword {
|
51
|
+
color: #000080;
|
52
|
+
font-weight: normal
|
53
|
+
}
|
54
|
+
|
55
|
+
code .attribute, .variable, .instancevar, .lisp .body {
|
56
|
+
color: #008080
|
57
|
+
}
|
58
|
+
|
59
|
+
code .regexp {
|
60
|
+
color: #009926
|
61
|
+
}
|
62
|
+
|
63
|
+
code .class {
|
64
|
+
color: #458;
|
65
|
+
font-weight: bold
|
66
|
+
}
|
67
|
+
|
68
|
+
code .symbol, .lisp .keyword {
|
69
|
+
color: #990073
|
70
|
+
}
|
71
|
+
|
72
|
+
code .builtin, .built_in, .lisp .title {
|
73
|
+
color: #0086b3
|
74
|
+
}
|
75
|
+
|
76
|
+
code .preprocessor, .pi, .doctype, .shebang, .cdata {
|
77
|
+
color: #999;
|
78
|
+
font-weight: bold
|
79
|
+
}
|
80
|
+
|
81
|
+
code .deletion {
|
82
|
+
background: #fdd
|
83
|
+
}
|
84
|
+
|
85
|
+
code .addition {
|
86
|
+
background: #dfd
|
87
|
+
}
|
88
|
+
|
89
|
+
code .diff .change {
|
90
|
+
background: #0086b3
|
91
|
+
}
|
92
|
+
|
93
|
+
code .chunk {
|
94
|
+
color: #aaa
|
95
|
+
}
|
96
|
+
|