erbside 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|