pakman 0.5.0 → 0.6.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.
- checksums.yaml +7 -0
- data/{History.markdown → History.md} +0 -0
- data/Manifest.txt +40 -21
- data/{README.markdown → README.md} +15 -10
- data/Rakefile +14 -7
- data/bin/pakman +0 -0
- data/lib/pakman.rb +13 -2
- data/lib/pakman/erb/template.rb +26 -0
- data/lib/pakman/{templater.rb → erb/templater.rb} +8 -2
- data/lib/pakman/liquid/template.rb +61 -0
- data/lib/pakman/liquid/templater.rb +68 -0
- data/lib/pakman/manifest.rb +2 -0
- data/lib/pakman/page.rb +56 -0
- data/lib/pakman/version.rb +2 -1
- data/test/data/test.yml +12 -0
- data/test/erb/pak/test.html.erb +24 -0
- data/test/erb/pak/test.txt +4 -0
- data/test/helper.rb +9 -0
- data/test/liquid/pak/test.html +27 -0
- data/test/liquid/pak/test.txt +4 -0
- data/test/liquid/test.html +21 -0
- data/test/pages/empty.txt +0 -0
- data/test/pages/page1.txt +5 -0
- data/test/pages/page2.txt +5 -0
- data/test/pages/page3.txt +3 -0
- data/test/pages/text.txt +3 -0
- data/test/test_erb.rb +50 -0
- data/test/test_liquid.rb +57 -0
- data/test/test_liquid_drops.rb +53 -0
- data/test/test_page.rb +41 -0
- metadata +88 -42
- data/lib/pakman/template.rb +0 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bf628523ec0e01ade19c4d0b9967ff96a2e93c70
|
4
|
+
data.tar.gz: d807a80bd056b41af7fcf8727527a9ba9e297c68
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 153efdc52b28be5f10a99e3cda57d52aa2b9409c24040d907793cdcc4737ebb4b41b4a555b075b0a115ef9af668d329fa21b4ba28efc7d9a3d33e984ce5fd33b
|
7
|
+
data.tar.gz: 0706462e1b030112b656624be971eeb66f4db754f37f28917f3351acdc266cbaa50edfa4704f67f9c26e9c47858920256360d491404cabfa8e5061d3309b7e1e
|
File without changes
|
data/Manifest.txt
CHANGED
@@ -1,21 +1,40 @@
|
|
1
|
-
History.
|
2
|
-
Manifest.txt
|
3
|
-
README.
|
4
|
-
Rakefile
|
5
|
-
bin/pakman
|
6
|
-
lib/pakman.rb
|
7
|
-
lib/pakman/cli/commands/fetch.rb
|
8
|
-
lib/pakman/cli/commands/gen.rb
|
9
|
-
lib/pakman/cli/commands/list.rb
|
10
|
-
lib/pakman/cli/ctx.rb
|
11
|
-
lib/pakman/cli/helpers.rb
|
12
|
-
lib/pakman/cli/opts.rb
|
13
|
-
lib/pakman/cli/runner.rb
|
14
|
-
lib/pakman/copier.rb
|
15
|
-
lib/pakman/
|
16
|
-
lib/pakman/
|
17
|
-
lib/pakman/
|
18
|
-
lib/pakman/
|
19
|
-
lib/pakman/
|
20
|
-
lib/pakman/
|
21
|
-
lib/pakman/
|
1
|
+
History.md
|
2
|
+
Manifest.txt
|
3
|
+
README.md
|
4
|
+
Rakefile
|
5
|
+
bin/pakman
|
6
|
+
lib/pakman.rb
|
7
|
+
lib/pakman/cli/commands/fetch.rb
|
8
|
+
lib/pakman/cli/commands/gen.rb
|
9
|
+
lib/pakman/cli/commands/list.rb
|
10
|
+
lib/pakman/cli/ctx.rb
|
11
|
+
lib/pakman/cli/helpers.rb
|
12
|
+
lib/pakman/cli/opts.rb
|
13
|
+
lib/pakman/cli/runner.rb
|
14
|
+
lib/pakman/copier.rb
|
15
|
+
lib/pakman/erb/template.rb
|
16
|
+
lib/pakman/erb/templater.rb
|
17
|
+
lib/pakman/fetcher.rb
|
18
|
+
lib/pakman/finder.rb
|
19
|
+
lib/pakman/liquid/template.rb
|
20
|
+
lib/pakman/liquid/templater.rb
|
21
|
+
lib/pakman/manifest.rb
|
22
|
+
lib/pakman/page.rb
|
23
|
+
lib/pakman/utils.rb
|
24
|
+
lib/pakman/version.rb
|
25
|
+
test/data/test.yml
|
26
|
+
test/erb/pak/test.html.erb
|
27
|
+
test/erb/pak/test.txt
|
28
|
+
test/helper.rb
|
29
|
+
test/liquid/pak/test.html
|
30
|
+
test/liquid/pak/test.txt
|
31
|
+
test/liquid/test.html
|
32
|
+
test/pages/empty.txt
|
33
|
+
test/pages/page1.txt
|
34
|
+
test/pages/page2.txt
|
35
|
+
test/pages/page3.txt
|
36
|
+
test/pages/text.txt
|
37
|
+
test/test_erb.rb
|
38
|
+
test/test_liquid.rb
|
39
|
+
test/test_liquid_drops.rb
|
40
|
+
test/test_page.rb
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# `pakman` - Template Pack Manager in Ruby
|
1
|
+
# `pakman` - Template Pack Manager in Ruby (incl. Embedded Ruby, Liquid, etc.)
|
2
2
|
|
3
3
|
|
4
|
-
* home
|
5
|
-
* bugs
|
6
|
-
* gem
|
7
|
-
* rdoc
|
8
|
-
|
4
|
+
* home :: [github.com/rubylibs/pakman](https://github.com/rubylibs/pakman)
|
5
|
+
* bugs :: [github.com/rubylibs/pakman/issues](https://github.com/rubylibs/pakman/issues)
|
6
|
+
* gem :: [rubygems.org/gems/pakman](https://rubygems.org/gems/pakman)
|
7
|
+
* rdoc :: [rubydoc.info/gems/pakman](http://rubydoc.info/gems/pakman)
|
8
|
+
* forum :: [groups.google.com/group/wwwmake](http://groups.google.com/group/wwwmake)
|
9
9
|
|
10
10
|
## Usage - Ruby Code
|
11
11
|
|
@@ -75,12 +75,17 @@ and author slides in plain text using a wiki-style markup language that's easy-t
|
|
75
75
|
|
76
76
|
## Real World Template Packs
|
77
77
|
|
78
|
-
* [S6 Template Pack](https://github.com/slideshow-
|
79
|
-
* [impress.js Template Pack](https://github.com/slideshow-
|
80
|
-
* [deck.js Template Pack](https://github.com/slideshow-
|
78
|
+
* [S6 Template Pack](https://github.com/slideshow-templates/slideshow-s6-blank)
|
79
|
+
* [impress.js Template Pack](https://github.com/slideshow-templates/slideshow-impress.js)
|
80
|
+
* [deck.js Template Pack](https://github.com/slideshow-templates/slideshow-deck.js)
|
81
81
|
|
82
82
|
|
83
83
|
## License
|
84
84
|
|
85
85
|
The `pakman` scripts are dedicated to the public domain.
|
86
|
-
Use it as you please with no restrictions whatsoever.
|
86
|
+
Use it as you please with no restrictions whatsoever.
|
87
|
+
|
88
|
+
## Questions? Comments?
|
89
|
+
|
90
|
+
Send them along to the [wwwmake forum/mailing list](http://groups.google.com/group/wwwmake).
|
91
|
+
Thanks!
|
data/Rakefile
CHANGED
@@ -5,21 +5,28 @@ Hoe.spec 'pakman' do
|
|
5
5
|
|
6
6
|
self.version = Pakman::VERSION
|
7
7
|
|
8
|
-
self.summary = 'pakman - Template Pack Manager'
|
8
|
+
self.summary = 'pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)'
|
9
9
|
self.description = summary
|
10
10
|
|
11
|
-
self.urls = ['https://github.com/
|
11
|
+
self.urls = ['https://github.com/rubylibs/pakman']
|
12
12
|
|
13
13
|
self.author = 'Gerald Bauer'
|
14
|
-
self.email = '
|
14
|
+
self.email = 'wwwmake@googlegroups.com'
|
15
15
|
|
16
16
|
self.extra_deps = [
|
17
|
-
['fetcher', '>= 0.
|
18
|
-
['logutils', '>= 0.6.
|
17
|
+
['fetcher', '>= 0.4.5'],
|
18
|
+
['logutils', '>= 0.6.1'],
|
19
|
+
['liquid', '>= 3.0.6'],
|
19
20
|
]
|
20
21
|
|
21
22
|
# switch extension to .rdoc for gihub formatting
|
22
|
-
self.readme_file = 'README.
|
23
|
-
self.history_file = 'History.
|
23
|
+
# self.readme_file = 'README.md'
|
24
|
+
# self.history_file = 'History.md'
|
25
|
+
|
26
|
+
self.licenses = ['Public Domain']
|
27
|
+
|
28
|
+
self.spec_extras = {
|
29
|
+
required_ruby_version: '>= 1.9.2'
|
30
|
+
}
|
24
31
|
|
25
32
|
end
|
data/bin/pakman
CHANGED
File without changes
|
data/lib/pakman.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
###
|
2
4
|
# NB: for local testing run like:
|
3
5
|
#
|
@@ -18,14 +20,23 @@ require 'logutils'
|
|
18
20
|
require 'fetcher' # fetch (download) files
|
19
21
|
|
20
22
|
|
23
|
+
# 3rd party rubygems
|
24
|
+
require 'liquid'
|
25
|
+
|
21
26
|
# our own code
|
22
27
|
|
23
28
|
require 'pakman/copier'
|
24
29
|
require 'pakman/fetcher'
|
25
30
|
require 'pakman/finder'
|
26
31
|
require 'pakman/manifest'
|
27
|
-
|
28
|
-
require 'pakman/
|
32
|
+
|
33
|
+
require 'pakman/erb/template'
|
34
|
+
require 'pakman/erb/templater'
|
35
|
+
|
36
|
+
require 'pakman/liquid/template'
|
37
|
+
require 'pakman/liquid/templater'
|
38
|
+
|
39
|
+
require 'pakman/page'
|
29
40
|
require 'pakman/utils'
|
30
41
|
require 'pakman/version'
|
31
42
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Pakman
|
4
|
+
|
5
|
+
class ErbTemplate
|
6
|
+
|
7
|
+
def self.from_file( path )
|
8
|
+
puts " Loading template (from file) >#{path}<..."
|
9
|
+
text = File.read( path ) ## use/todo: use read utf8 - why? why not??
|
10
|
+
self.new( text, path: path ) ## note: pass along path as an option
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.from_string( text ) ### use parse as alias - why?? why not??
|
14
|
+
self.new( text )
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize( text, opts={} )
|
18
|
+
@template = ERB.new( text )
|
19
|
+
end
|
20
|
+
|
21
|
+
def render( binding )
|
22
|
+
@template.result( binding )
|
23
|
+
end
|
24
|
+
|
25
|
+
end # class ErbTemplate
|
26
|
+
end # module Pakman
|
@@ -1,5 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Pakman
|
2
4
|
|
5
|
+
### todo:
|
6
|
+
## rename to ErbTemplater (or RubyTemplater) - why? why not?
|
7
|
+
|
8
|
+
|
3
9
|
class Templater
|
4
10
|
|
5
11
|
include LogUtils::Logging
|
@@ -46,7 +52,7 @@ class Templater
|
|
46
52
|
puts " Merging to #{dest}..."
|
47
53
|
|
48
54
|
out = File.new( destfull, 'w+' )
|
49
|
-
out <<
|
55
|
+
out << ErbTemplate.from_file( source ).render( binding )
|
50
56
|
out.flush
|
51
57
|
out.close
|
52
58
|
else
|
@@ -60,4 +66,4 @@ class Templater
|
|
60
66
|
end # method merge_pak
|
61
67
|
|
62
68
|
end # class Templater
|
63
|
-
end # module Pakman
|
69
|
+
end # module Pakman
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Pakman
|
4
|
+
|
5
|
+
|
6
|
+
class LiquidTemplate
|
7
|
+
|
8
|
+
def self.from_file( path )
|
9
|
+
puts " Loading template (from file) >#{path}<..."
|
10
|
+
text = File.read( path ) ## use/todo: use read utf8 - why? why not??
|
11
|
+
self.new( text, path: path ) ## note: pass along path as an option
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.from_string( text ) ### use parse as alias - why?? why not??
|
15
|
+
self.new( text )
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize( text, opts={} )
|
19
|
+
@template = Liquid::Template.parse( text ) # parses and compiles the template
|
20
|
+
end
|
21
|
+
|
22
|
+
def render( hash )
|
23
|
+
## note: hash keys MUST be strings (not symbols) e.g. 'name' => 'Toby'
|
24
|
+
## pp hash
|
25
|
+
@template.render( hash )
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class LiquidTemplate
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
#########################
|
33
|
+
## convenience helper for pages (with headers/front matter)
|
34
|
+
|
35
|
+
class LiquidPageTemplate
|
36
|
+
def self.from_file( path )
|
37
|
+
## todo: (auto)-add headers as page.title etc. -- why? why not??
|
38
|
+
puts " Loading page template (from file) >#{path}<..."
|
39
|
+
page = Page.from_file( path ) ## use/todo: use read utf8 - why? why not??
|
40
|
+
self.new( page.contents, path: path ) ## note: pass along path as an option
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.from_string( text ) ### use parse as alias - why?? why not??
|
44
|
+
## todo: (auto)-add headers as page.title etc. -- why? why not??
|
45
|
+
page = Page.from_string( text )
|
46
|
+
self.new( page.contents )
|
47
|
+
end
|
48
|
+
|
49
|
+
def initialize( text, opts={} )
|
50
|
+
@template = LiquidTemplate.new( text, opts )
|
51
|
+
end
|
52
|
+
|
53
|
+
def render( hash )
|
54
|
+
@template.render( hash )
|
55
|
+
end
|
56
|
+
|
57
|
+
end ## class LiquidPageTemplate
|
58
|
+
|
59
|
+
|
60
|
+
end # module Pakman
|
61
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Pakman
|
4
|
+
|
5
|
+
|
6
|
+
class LiquidTemplater
|
7
|
+
|
8
|
+
include LogUtils::Logging
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
end
|
12
|
+
|
13
|
+
## rename binding/hash to assigns or something more specific - why? why not?
|
14
|
+
def merge_pak( manifestsrc, pakpath, binding, name )
|
15
|
+
|
16
|
+
start = Time.now
|
17
|
+
|
18
|
+
pakname = Pakman.pakname_from_file( manifestsrc )
|
19
|
+
|
20
|
+
puts "Merging template pack '#{pakname}'"
|
21
|
+
|
22
|
+
# todo: rename to load_file once depreated API got removed
|
23
|
+
manifest = Manifest.load_file_v2( manifestsrc )
|
24
|
+
|
25
|
+
manifest.each do |entry|
|
26
|
+
dest = entry[0]
|
27
|
+
source = entry[1]
|
28
|
+
|
29
|
+
if dest =~ /__file__/ # replace w/ name
|
30
|
+
dest = dest.gsub( '__file__', name )
|
31
|
+
end
|
32
|
+
|
33
|
+
# get full (absolute) path and make sure path exists
|
34
|
+
destfull = File.expand_path( dest, pakpath )
|
35
|
+
destpath = File.dirname( destfull )
|
36
|
+
FileUtils.makedirs( destpath ) unless File.directory?( destpath )
|
37
|
+
|
38
|
+
logger.debug "destfull=>#{destfull}<"
|
39
|
+
logger.debug "destpath=>#{destpath}<"
|
40
|
+
|
41
|
+
###
|
42
|
+
# note:
|
43
|
+
# use jekyll convention for now
|
44
|
+
# check if file starts with front matter (yaml block)
|
45
|
+
# if yes, process (with liquid) otherwise copy as is 1:1
|
46
|
+
|
47
|
+
source_page = Page.from_file( source )
|
48
|
+
if source_page.headers?
|
49
|
+
puts " Merging to #{dest}..."
|
50
|
+
|
51
|
+
out = File.new( destfull, 'w+' )
|
52
|
+
## note: only pass along contents (not headers e.g. front matter for now)
|
53
|
+
## (auto-)add front matter headers as page.[xxx] - why? why not??
|
54
|
+
out << LiquidTemplate.from_string( source_page.contents ).render( binding )
|
55
|
+
out.flush
|
56
|
+
out.close
|
57
|
+
else
|
58
|
+
puts " Copying to #{dest} from #{source}..."
|
59
|
+
|
60
|
+
FileUtils.copy( source, destfull )
|
61
|
+
end
|
62
|
+
end # each entry in manifest
|
63
|
+
|
64
|
+
puts "Done (in #{Time.now-start} s)."
|
65
|
+
end # method merge_pak
|
66
|
+
|
67
|
+
end # class LiquidTemplater
|
68
|
+
end # module Pakman
|
data/lib/pakman/manifest.rb
CHANGED
data/lib/pakman/page.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Pakman
|
4
|
+
|
5
|
+
|
6
|
+
## Jekyll-style page
|
7
|
+
## with optional front-matter (yaml block)
|
8
|
+
|
9
|
+
class Page
|
10
|
+
|
11
|
+
def self.from_file( path )
|
12
|
+
puts " Loading page (from file) >#{path}<..."
|
13
|
+
text = File.read( path ) ## use/todo: use read utf8 - why? why not??
|
14
|
+
self.new( text, path: path ) ## note: pass along path as an option
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.from_string( text ) ### use parse as alias - why?? why not??
|
18
|
+
self.new( text )
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :contents
|
22
|
+
attr_reader :headers
|
23
|
+
|
24
|
+
## has headers/metadata (front matter block) - yes/no - use hash for check for now
|
25
|
+
def headers?() @headers.kind_of?( Hash ); end
|
26
|
+
|
27
|
+
## check if \s includes newline too?
|
28
|
+
## fix/check ^ - just means start of newline (use /A or something --- MUST always be first
|
29
|
+
##
|
30
|
+
## note: include --- in headers
|
31
|
+
## e.g. --- results in nil
|
32
|
+
## empty string (without leading ---) results in false! (we want nil if no headers for empty block)
|
33
|
+
HEADERS_PATTERN = /
|
34
|
+
^(?<headers>---\s*\n
|
35
|
+
.*?)
|
36
|
+
^(---\s*$\n?)
|
37
|
+
/xm
|
38
|
+
|
39
|
+
def initialize( text, opts={} )
|
40
|
+
## todo/fix: check regex in jekyll (add link to source etc.)
|
41
|
+
if m=HEADERS_PATTERN.match( text )
|
42
|
+
@contents = m.post_match
|
43
|
+
pp m
|
44
|
+
pp m[:headers]
|
45
|
+
@headers = YAML.load( m[:headers] )
|
46
|
+
pp @headers
|
47
|
+
@headers = {} if @headers.nil? ## check if headers is nil use/assign empty hash
|
48
|
+
else
|
49
|
+
@contents = text
|
50
|
+
@headers = nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end # class Page
|
55
|
+
end # module Pakman
|
56
|
+
|
data/lib/pakman/version.rb
CHANGED
data/test/data/test.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>pakman Test Template</title>
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
|
7
|
+
<h1>Hello pakman</h1>
|
8
|
+
|
9
|
+
<h3>Headers</h3>
|
10
|
+
|
11
|
+
<ul>
|
12
|
+
<li>author: <%= headers['author'] %></li>
|
13
|
+
<li>title: <%= headers['title'] %></li>
|
14
|
+
</ul>
|
15
|
+
|
16
|
+
<h3>Slides</h3>
|
17
|
+
|
18
|
+
<% slides.each do |slide| %>
|
19
|
+
<div><%= slide['content'] %></div>
|
20
|
+
<div><%= slide['header'] %></div>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
</body>
|
24
|
+
</html>
|
data/test/helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
|
4
|
+
<html>
|
5
|
+
<head>
|
6
|
+
<title>pakman Test Template</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
|
10
|
+
<h1>Hello pakman</h1>
|
11
|
+
|
12
|
+
<h3>Headers</h3>
|
13
|
+
|
14
|
+
<ul>
|
15
|
+
<li>author: {{ headers.author }}</li>
|
16
|
+
<li>title: {{ headers.title }}</li>
|
17
|
+
</ul>
|
18
|
+
|
19
|
+
<h3>Slides</h3>
|
20
|
+
|
21
|
+
{% for slide in slides %}
|
22
|
+
<div>{{ slide.content }}</div>
|
23
|
+
<div>{{ slide.header }}</div>
|
24
|
+
{% endfor %}
|
25
|
+
|
26
|
+
</body>
|
27
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
<h3>Headers</h3>
|
3
|
+
|
4
|
+
<ul>
|
5
|
+
<li>author: {{ headers['author'] }}</li>
|
6
|
+
<li>title: {{ headers['title'] }}</li>
|
7
|
+
|
8
|
+
<li>author: {{ headers.author }}</li>
|
9
|
+
<li>title: {{ headers.title }}</li>
|
10
|
+
</ul>
|
11
|
+
|
12
|
+
|
13
|
+
<h3>Slides</h3>
|
14
|
+
|
15
|
+
{% for slide in slides %}
|
16
|
+
<div>{{ slide['content'] }}</div>
|
17
|
+
<div>{{ slide['header'] }}</div>
|
18
|
+
|
19
|
+
<div>{{ slide.content }}</div>
|
20
|
+
<div>{{ slide.header }}</div>
|
21
|
+
{% endfor %}
|
File without changes
|
data/test/pages/text.txt
ADDED
data/test/test_erb.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_erb.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
|
11
|
+
class TestErb < MiniTest::Test
|
12
|
+
|
13
|
+
class Ctx # Context
|
14
|
+
|
15
|
+
def initialize( hash )
|
16
|
+
@hash = hash
|
17
|
+
@headers = hash['headers']
|
18
|
+
@slides = hash['slides']
|
19
|
+
|
20
|
+
puts 'hash:'
|
21
|
+
pp @hash
|
22
|
+
puts 'headers:'
|
23
|
+
pp @headers
|
24
|
+
puts 'slides:'
|
25
|
+
pp @slides
|
26
|
+
end
|
27
|
+
|
28
|
+
attr_reader :headers
|
29
|
+
attr_reader :slides
|
30
|
+
|
31
|
+
def ctx
|
32
|
+
### todo: check if method_missing works with binding in erb???
|
33
|
+
binding
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_merge
|
38
|
+
hash = YAML.load_file( "#{Pakman.root}/test/data/test.yml" )
|
39
|
+
ctx = Ctx.new( hash )
|
40
|
+
|
41
|
+
manifestsrc = "#{Pakman.root}/test/erb/pak/test.txt"
|
42
|
+
outpath = "#{Pakman.root}/tmp/#{Time.now.to_i}" ## pakpath/output path
|
43
|
+
|
44
|
+
Pakman::Templater.new.merge_pak( manifestsrc, outpath, ctx.ctx, 'test' )
|
45
|
+
|
46
|
+
assert true
|
47
|
+
end # method test_merge
|
48
|
+
|
49
|
+
end # class TestErb
|
50
|
+
|
data/test/test_liquid.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_liquid.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
|
11
|
+
class TestLiquid < MiniTest::Test
|
12
|
+
|
13
|
+
|
14
|
+
def setup
|
15
|
+
Liquid::Template.error_mode = :strict
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def test_template
|
20
|
+
hash = YAML.load_file( "#{Pakman.root}/test/data/test.yml" )
|
21
|
+
ctx= { 'headers' => hash['headers'], 'slides' => hash['slides'] }
|
22
|
+
pp ctx
|
23
|
+
|
24
|
+
path = "#{Pakman.root}/test/liquid/test.html"
|
25
|
+
t = Pakman::LiquidTemplate.from_file( path )
|
26
|
+
pp t.render( ctx )
|
27
|
+
|
28
|
+
assert true
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_page_template
|
32
|
+
hash = YAML.load_file( "#{Pakman.root}/test/data/test.yml" )
|
33
|
+
ctx= { 'headers' => hash['headers'], 'slides' => hash['slides'] }
|
34
|
+
pp ctx
|
35
|
+
|
36
|
+
path = "#{Pakman.root}/test/liquid/pak/test.html"
|
37
|
+
t = Pakman::LiquidPageTemplate.from_file( path )
|
38
|
+
pp t.render( ctx )
|
39
|
+
|
40
|
+
assert true
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_merge
|
44
|
+
hash = YAML.load_file( "#{Pakman.root}/test/data/test.yml" )
|
45
|
+
ctx= { 'headers' => hash['headers'], 'slides' => hash['slides'] }
|
46
|
+
pp ctx
|
47
|
+
|
48
|
+
manifestsrc = "#{Pakman.root}/test/liquid/pak/test.txt"
|
49
|
+
outpath = "#{Pakman.root}/tmp/#{Time.now.to_i}" ## pakpath/output path
|
50
|
+
|
51
|
+
Pakman::LiquidTemplater.new.merge_pak( manifestsrc, outpath, ctx, 'test' )
|
52
|
+
|
53
|
+
assert true
|
54
|
+
end # method test_merge
|
55
|
+
|
56
|
+
end # class TestLiquid
|
57
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_liquid_drops.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
|
11
|
+
class TestLiquidDrops < MiniTest::Test
|
12
|
+
|
13
|
+
class HeadersDrop < Liquid::Drop
|
14
|
+
|
15
|
+
def initialize( h )
|
16
|
+
@h = h
|
17
|
+
end
|
18
|
+
|
19
|
+
def author() puts "call author"; @h['author']; end
|
20
|
+
def title() puts "call title"; @h['title']; end
|
21
|
+
end
|
22
|
+
|
23
|
+
class SlideDrop < Liquid::Drop
|
24
|
+
|
25
|
+
def initialize( h )
|
26
|
+
@h = h
|
27
|
+
end
|
28
|
+
|
29
|
+
def content() puts "call content"; @h['content']; end
|
30
|
+
def header() puts "call header"; @h['header']; end
|
31
|
+
end
|
32
|
+
|
33
|
+
def setup
|
34
|
+
Liquid::Template.error_mode = :strict
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def test_template
|
39
|
+
hash = YAML.load_file( "#{Pakman.root}/test/data/test.yml" )
|
40
|
+
headers = HeadersDrop.new( hash['headers'] )
|
41
|
+
slides = hash['slides'].map { |h| SlideDrop.new( h ) }
|
42
|
+
ctx= { 'headers' => headers, 'slides' => slides }
|
43
|
+
pp ctx
|
44
|
+
|
45
|
+
path = "#{Pakman.root}/test/liquid/test.html"
|
46
|
+
t = Pakman::LiquidTemplate.from_file( path )
|
47
|
+
pp t.render( ctx )
|
48
|
+
|
49
|
+
assert true
|
50
|
+
end
|
51
|
+
|
52
|
+
end # class TestLiquidDrops
|
53
|
+
|
data/test/test_page.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_page.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
|
11
|
+
class TestPage < MiniTest::Test
|
12
|
+
|
13
|
+
def test_page1
|
14
|
+
page = Pakman::Page.from_file( "#{Pakman.root}/test/pages/page1.txt" )
|
15
|
+
assert page.headers?
|
16
|
+
end # method test_page1
|
17
|
+
|
18
|
+
def test_page2
|
19
|
+
page = Pakman::Page.from_file( "#{Pakman.root}/test/pages/page2.txt" )
|
20
|
+
assert page.headers?
|
21
|
+
end # method test_page2
|
22
|
+
|
23
|
+
def test_page3
|
24
|
+
page = Pakman::Page.from_file( "#{Pakman.root}/test/pages/page3.txt" )
|
25
|
+
assert page.headers?
|
26
|
+
end # method test_page3
|
27
|
+
|
28
|
+
def test_empty
|
29
|
+
page = Pakman::Page.from_file( "#{Pakman.root}/test/pages/empty.txt" )
|
30
|
+
assert page.headers? == false
|
31
|
+
end # method test_empty
|
32
|
+
|
33
|
+
def test_text
|
34
|
+
page = Pakman::Page.from_file( "#{Pakman.root}/test/pages/text.txt" )
|
35
|
+
assert page.headers? == false
|
36
|
+
end # method test_text
|
37
|
+
|
38
|
+
end # class TestPage
|
39
|
+
|
40
|
+
|
41
|
+
|
metadata
CHANGED
@@ -1,71 +1,98 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pakman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Gerald Bauer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-03-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: fetcher
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
19
|
+
version: 0.4.5
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.4.5
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: logutils
|
27
|
-
requirement:
|
28
|
-
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.6.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.6.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: liquid
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
29
44
|
requirements:
|
30
|
-
- -
|
45
|
+
- - ">="
|
31
46
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.6
|
47
|
+
version: 3.0.6
|
33
48
|
type: :runtime
|
34
49
|
prerelease: false
|
35
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.0.6
|
36
55
|
- !ruby/object:Gem::Dependency
|
37
56
|
name: rdoc
|
38
|
-
requirement:
|
39
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
40
58
|
requirements:
|
41
|
-
- - ~>
|
59
|
+
- - "~>"
|
42
60
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
61
|
+
version: '4.0'
|
44
62
|
type: :development
|
45
63
|
prerelease: false
|
46
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
47
69
|
- !ruby/object:Gem::Dependency
|
48
70
|
name: hoe
|
49
|
-
requirement:
|
50
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
51
72
|
requirements:
|
52
|
-
- - ~>
|
73
|
+
- - "~>"
|
53
74
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
75
|
+
version: '3.14'
|
55
76
|
type: :development
|
56
77
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
|
59
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.14'
|
83
|
+
description: pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)
|
84
|
+
email: wwwmake@googlegroups.com
|
60
85
|
executables:
|
61
86
|
- pakman
|
62
87
|
extensions: []
|
63
88
|
extra_rdoc_files:
|
89
|
+
- History.md
|
64
90
|
- Manifest.txt
|
91
|
+
- README.md
|
65
92
|
files:
|
66
|
-
- History.
|
93
|
+
- History.md
|
67
94
|
- Manifest.txt
|
68
|
-
- README.
|
95
|
+
- README.md
|
69
96
|
- Rakefile
|
70
97
|
- bin/pakman
|
71
98
|
- lib/pakman.rb
|
@@ -77,37 +104,56 @@ files:
|
|
77
104
|
- lib/pakman/cli/opts.rb
|
78
105
|
- lib/pakman/cli/runner.rb
|
79
106
|
- lib/pakman/copier.rb
|
107
|
+
- lib/pakman/erb/template.rb
|
108
|
+
- lib/pakman/erb/templater.rb
|
80
109
|
- lib/pakman/fetcher.rb
|
81
110
|
- lib/pakman/finder.rb
|
111
|
+
- lib/pakman/liquid/template.rb
|
112
|
+
- lib/pakman/liquid/templater.rb
|
82
113
|
- lib/pakman/manifest.rb
|
83
|
-
- lib/pakman/
|
84
|
-
- lib/pakman/templater.rb
|
114
|
+
- lib/pakman/page.rb
|
85
115
|
- lib/pakman/utils.rb
|
86
116
|
- lib/pakman/version.rb
|
87
|
-
|
88
|
-
|
117
|
+
- test/data/test.yml
|
118
|
+
- test/erb/pak/test.html.erb
|
119
|
+
- test/erb/pak/test.txt
|
120
|
+
- test/helper.rb
|
121
|
+
- test/liquid/pak/test.html
|
122
|
+
- test/liquid/pak/test.txt
|
123
|
+
- test/liquid/test.html
|
124
|
+
- test/pages/empty.txt
|
125
|
+
- test/pages/page1.txt
|
126
|
+
- test/pages/page2.txt
|
127
|
+
- test/pages/page3.txt
|
128
|
+
- test/pages/text.txt
|
129
|
+
- test/test_erb.rb
|
130
|
+
- test/test_liquid.rb
|
131
|
+
- test/test_liquid_drops.rb
|
132
|
+
- test/test_page.rb
|
133
|
+
homepage: https://github.com/rubylibs/pakman
|
134
|
+
licenses:
|
135
|
+
- Public Domain
|
136
|
+
metadata: {}
|
89
137
|
post_install_message:
|
90
138
|
rdoc_options:
|
91
|
-
- --main
|
92
|
-
- README.
|
139
|
+
- "--main"
|
140
|
+
- README.md
|
93
141
|
require_paths:
|
94
142
|
- lib
|
95
143
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
144
|
requirements:
|
98
|
-
- -
|
145
|
+
- - ">="
|
99
146
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
147
|
+
version: 1.9.2
|
101
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
149
|
requirements:
|
104
|
-
- -
|
150
|
+
- - ">="
|
105
151
|
- !ruby/object:Gem::Version
|
106
152
|
version: '0'
|
107
153
|
requirements: []
|
108
|
-
rubyforge_project:
|
109
|
-
rubygems_version:
|
154
|
+
rubyforge_project:
|
155
|
+
rubygems_version: 2.2.3
|
110
156
|
signing_key:
|
111
|
-
specification_version:
|
112
|
-
summary: pakman - Template Pack Manager
|
157
|
+
specification_version: 4
|
158
|
+
summary: pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)
|
113
159
|
test_files: []
|
data/lib/pakman/template.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Pakman
|
2
|
-
|
3
|
-
class Template
|
4
|
-
|
5
|
-
def initialize( path )
|
6
|
-
@path = path
|
7
|
-
end
|
8
|
-
|
9
|
-
def render( binding )
|
10
|
-
ERB.new( load_template() ).result( binding )
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
def load_template
|
15
|
-
puts " Loading template >#{@path}<..."
|
16
|
-
File.read( @path )
|
17
|
-
end
|
18
|
-
|
19
|
-
end # class Template
|
20
|
-
end # module Pakman
|