erbside 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/.gemspec +152 -0
  2. data/.gitignore +8 -0
  3. data/.ruby +48 -0
  4. data/.yardopts +6 -0
  5. data/{HISTORY → HISTORY.rdoc} +0 -0
  6. data/MANIFEST +33 -0
  7. data/NOTICE.rdoc +32 -0
  8. data/PROFILE +6 -3
  9. data/README.rdoc +76 -0
  10. data/VERSION +1 -1
  11. data/lib/erbside.rb +6 -2
  12. data/lib/erbside/context.rb +3 -3
  13. data/lib/erbside/gemspec.rb +19 -0
  14. data/lib/erbside/inline.rb +8 -5
  15. data/lib/erbside/inline/cpp.rb +7 -0
  16. data/lib/erbside/inline/css.rb +7 -0
  17. data/lib/erbside/inline/js.rb +7 -0
  18. data/lib/erbside/metadata.rb +86 -50
  19. data/lib/erbside/runner.rb +14 -5
  20. data/main.assembly +56 -0
  21. data/{test/functional → qed}/applique/env.rb +0 -0
  22. data/{test/functional → qed}/bash.rdoc +0 -0
  23. data/{test/functional → qed}/cli.rdoc +0 -0
  24. data/{test/functional → qed}/cpp.rdoc +0 -0
  25. data/{test/functional → qed}/css.rdoc +0 -0
  26. data/{test/functional → qed}/javascript.rdoc +0 -0
  27. data/{test/functional → qed}/ruby.rdoc +0 -0
  28. data/{test/functional → qed}/sgml.rdoc +0 -0
  29. data/site/.htaccess +2 -0
  30. data/site/.rsync-filter +7 -0
  31. data/site/assets/css/highlight.css +96 -0
  32. data/site/assets/css/reset.css +19 -0
  33. data/site/assets/css/site.css +52 -0
  34. data/site/assets/img/curb.jpg +0 -0
  35. data/site/assets/img/emeraled.png +0 -0
  36. data/site/assets/img/fade.png +0 -0
  37. data/site/assets/img/fork-me.png +0 -0
  38. data/site/assets/img/icon.jpg +0 -0
  39. data/site/assets/js/highlight.js +1 -0
  40. data/site/assets/js/jquery.js +19 -0
  41. data/site/assets/js/jquery.tabs.js +1 -0
  42. data/site/index.html +229 -0
  43. data/test/{unit/fixture → fixture}/inline.rb +3 -3
  44. data/test/{unit/fixture → fixture}/inline_complex.rb +0 -0
  45. data/test/inline_test.rb +15 -0
  46. data/work/defunct/css/color.css +45 -0
  47. data/work/defunct/css/font.css +39 -0
  48. data/work/defunct/css/struct.css +51 -0
  49. data/work/defunct/inline-old/bash.rb +36 -0
  50. data/work/defunct/inline-old/cpp.rb +39 -0
  51. data/work/defunct/inline-old/css.rb +32 -0
  52. data/work/defunct/inline-old/html.rb +32 -0
  53. data/work/defunct/inline-old/js.rb +85 -0
  54. data/work/defunct/inline-old/ruby.rb +147 -0
  55. data/work/defunct/inline-old/type.rb +91 -0
  56. data/work/defunct/inline.rb +202 -0
  57. data/work/defunct/plan.rb +37 -0
  58. data/work/defunct/tiller.rb +200 -0
  59. data/work/defunct/webme/options.yml +4 -0
  60. data/work/defunct/whole.rb +221 -0
  61. data/{lib → work}/plugins/syckle/erbside.rb +0 -0
  62. data/work/radio_earth.jpg +0 -0
  63. data/yard.watchr +12 -0
  64. metadata +94 -50
  65. data/LICENSE +0 -206
  66. data/README +0 -88
  67. 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
@@ -31,7 +31,10 @@ module Erbside
31
31
  register << base
32
32
  end
33
33
 
34
- def self.extensions ; raise ; end
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
  #
@@ -26,6 +26,13 @@ module Erbside
26
26
  '*/'
27
27
  end
28
28
 
29
+ #
30
+ def block_match
31
+ b = Regexp.escape(remarker_block_begin)
32
+ e = Regexp.escape(remarker_block_end)
33
+ %r{^(#{b})(\s*)(:#{TAG})(\+\d*)?(\:)(\s*)((?m:.*?))(\s#{e})}
34
+ end
35
+
29
36
  end
30
37
 
31
38
  end
@@ -28,6 +28,13 @@ module Erbside
28
28
  '*/'
29
29
  end
30
30
 
31
+ #
32
+ def block_match
33
+ b = Regexp.escape(remarker_block_begin)
34
+ e = Regexp.escape(remarker_block_end)
35
+ %r{^(#{b})(\s*)(:#{TAG})(\+\d*)?(\:)(\s*)((?m:.*?))(\s#{e})}
36
+ end
37
+
31
38
  end
32
39
 
33
40
  end
@@ -28,6 +28,13 @@ module Erbside
28
28
  '*/'
29
29
  end
30
30
 
31
+ #
32
+ def block_match
33
+ b = Regexp.escape(remarker_block_begin)
34
+ e = Regexp.escape(remarker_block_end)
35
+ %r{^(#{b})(\s*)(:#{TAG})(\+\d*)?(\:)(\s*)((?m:.*?))(\s#{e})}
36
+ end
37
+
31
38
  end
32
39
 
33
40
  end
@@ -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
- #require 'facets/ostruct'
11
+ # Canonical metadata file.
12
+ CANONICAL_FILENAME = '.ruby'
10
13
 
11
- begin
12
- require 'pom'
13
- rescue LoadError
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
- def initialize(root=nil)
21
- @root = self.class.root(root) || Dir.pwd
22
-
23
- if defined?(POM)
24
- @pom = POM::Metadata.new(@root)
25
- else
26
- @pom = nil
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 = {} #OpenStruct.new
56
+ @cache = {}
57
+ end
30
58
 
31
- load_metadata # TODO: when pom supports arbitrary metadata, merge @pom and @cache into same variable.
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 method_missing(s, *a)
36
- return super unless a.empty?
37
- if @pom
38
- begin
39
- @pom.__send__(s, *a)
40
- rescue
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
- if @pom
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
- # Load metadata. This serves as the fallback if POM is not used.
84
+ def canonical_file
85
+ File.join(root, CANONICAL_FILENAME)
86
+ end
62
87
 
63
- def load_metadata
64
- Dir[File.join(metadir, '*')].each do |f|
65
- val = File.read(f).strip
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
- # What is project root's metadirectory?
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, '{.meta,meta}/')].first || '.meta/'
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
-
@@ -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 = options[:force]
43
- @skip = options[:skip]
44
- @output = options[:output]
45
- #@delete = options[: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"
@@ -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
@@ -0,0 +1,2 @@
1
+ DirectoryIndex index.html
2
+
@@ -0,0 +1,7 @@
1
+ - .svn
2
+ - scrap
3
+ P wiki
4
+ P robot.txt
5
+ P statcvs
6
+ P statsvn
7
+ P usage
@@ -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
+