flutterby 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 257ac8a84ea41487bbf327f0e7a925f2ec8f3f5c
4
- data.tar.gz: 93dfaeda969555a8197f38d794502f3cd7116926
3
+ metadata.gz: 6568ea63c5bdde201dbc5a1b742075e9cdf98353
4
+ data.tar.gz: e6b105a6a82e813e8bae5d41c81ff1a61d721c3e
5
5
  SHA512:
6
- metadata.gz: 5053ceb42b1769afe1e3a4755141bcb7944dc56f44d4ca587623e77c91b759362d9c499c23ecad0b621d8d5facc1c80e9c33e29df8005ac74594ca7971004fac
7
- data.tar.gz: d9abe432d2f653ded73dec6b2140e7ca8a718632c81b25b16ba34300d6e66fe902d2a5ec9aa1c22912f55860bfbbe49df3be8c42e99e9042df0fda87b0c54796
6
+ metadata.gz: 59b76bd0e67caa50af779351c25081cc2626e1074c6ebf323bc5a6b5f88d5c9e64850ec68c5beab7f109cbb3672f8f480530c0d7f4a0dc17e05dcb6189aa9817
7
+ data.tar.gz: 18de50df6ce8bc75282b8b97f4c010bfae23aab5f053397e4bbb18abea8600bcbc0581f04ac18c3e847f1da0beb3fb0a5e4576041392525723117b3a20a4ea99
data/README.md CHANGED
@@ -10,12 +10,12 @@ the _experimental_ bit, though. Use with care, if at all!)
10
10
  - Build your site simply as a tree of files and folders. Each file will be converted according to its extension chain (eg. `styles.css.scss` will be rendered as `styles.css`, `about.html.md` as `about.html` and so on.)
11
11
  - Built-in support for Markdown (by way of [Slodown](https://github.com/hmans/slodown)), [Sass](https://github.com/sass/sass), [ERB](http://ruby-doc.org/stdlib-2.4.0/libdoc/erb/rdoc/ERB.html) and [Slim](http://slim-lang.com/).
12
12
  - A (slow) HTTP server to serve your site dynamically (for development.)
13
+ - Dynamically enhance your site's functionality with Ruby code.
13
14
 
14
15
 
15
16
  ## Missing (but Planned) Features
16
17
 
17
18
  - Extract filters (like Slim, Sass etc.) to separate gems
18
- - Customize folder behavior through Ruby
19
19
  - Produce a fun screencast to explain what the heck is going on here!
20
20
  - More tests, of course!
21
21
 
data/flutterby.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
27
  spec.add_development_dependency 'awesome_print', '~> 0'
28
28
  spec.add_development_dependency 'gem-release', '~> 0'
29
+ spec.add_development_dependency 'pry', '~> 0.10'
29
30
 
30
31
  spec.add_dependency 'commander', '~> 4.4'
31
32
  spec.add_dependency 'slodown', '~> 0.3'
data/lib/flutterby/cli.rb CHANGED
@@ -20,6 +20,7 @@ Commander.configure do
20
20
  root.export(options.out)
21
21
  end
22
22
  end
23
+ alias_command :b, :build
23
24
 
24
25
  command :serve do |c|
25
26
  c.syntax = 'flutterby serve [options]'
@@ -35,4 +36,6 @@ Commander.configure do
35
36
  server.run!
36
37
  end
37
38
  end
39
+ alias_command :server, :serve
40
+ alias_command :s, :serve
38
41
  end
@@ -37,8 +37,12 @@ module Flutterby
37
37
  end
38
38
 
39
39
  @children.define_singleton_method(:find_by_name) do |name|
40
- name = name.split('.').first
41
- find { |c| c.name == name }
40
+ # Look for a fully qualified name (index.html), or a simple name (index)?
41
+ if name.include?(".")
42
+ find { |c| c.full_name == name }
43
+ else
44
+ find { |c| c.name == name }
45
+ end
42
46
  end
43
47
  end
44
48
 
@@ -4,6 +4,7 @@ require 'tilt'
4
4
  require 'slim'
5
5
  require 'toml'
6
6
  require 'mime-types'
7
+ require 'json'
7
8
 
8
9
  module Flutterby
9
10
  class File < Entity
@@ -25,6 +26,10 @@ module Flutterby
25
26
  # Read remaining data from frontmatter. Data in frontmatter
26
27
  # will always have precedence!
27
28
  @data.merge! parse_frontmatter
29
+
30
+ # Do some extra processing depending on extension
31
+ meth = "read_#{ext}"
32
+ send(meth) if respond_to?(meth)
28
33
  end
29
34
 
30
35
  def parse_frontmatter
@@ -52,8 +57,6 @@ module Flutterby
52
57
  meth = "process_#{filter}"
53
58
  if respond_to?(meth)
54
59
  result = send(meth, result)
55
- else
56
- puts "Woops, no #{meth} available :("
57
60
  end
58
61
  end
59
62
 
@@ -68,15 +71,7 @@ module Flutterby
68
71
  def view
69
72
  @view ||= begin
70
73
  View.new(self).tap do |view|
71
- # load additional view code
72
- if view_entity = sibling("_view.rb")
73
- case view_entity.ext
74
- when "rb" then
75
- view.instance_eval(view_entity.contents)
76
- else
77
- raise "Unknown view extension #{view_entity.full_name}"
78
- end
79
- end
74
+ parent.extend_view!(view) if parent
80
75
  end
81
76
  end
82
77
  end
@@ -100,6 +95,14 @@ module Flutterby
100
95
  engine.render
101
96
  end
102
97
 
98
+ def read_json
99
+ data.merge!(JSON.parse(contents))
100
+ end
101
+
102
+ def read_yaml
103
+ data.merge!(YAML.load(contents))
104
+ end
105
+
103
106
  def apply_layout(input)
104
107
  output = input
105
108
 
@@ -15,5 +15,22 @@ module Flutterby
15
15
  child.export(path)
16
16
  end
17
17
  end
18
+
19
+ def extend_view!(view)
20
+ # Load the view extension available in this folder into the given view.
21
+ #
22
+ if view_entity = find("_view.rb")
23
+ case view_entity.ext
24
+ when "rb" then
25
+ view.instance_eval(view_entity.contents)
26
+ else
27
+ raise "Unknown view extension #{view_entity.full_name}"
28
+ end
29
+ end
30
+
31
+ # Then pass the whole thing up the stack.
32
+ #
33
+ parent ? parent.extend_view!(view) : view
34
+ end
18
35
  end
19
36
  end
@@ -1,3 +1,3 @@
1
1
  module Flutterby
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flutterby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Mans
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.10'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.10'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: commander
85
99
  requirement: !ruby/object:Gem::Requirement