mascot 0.1.7 → 0.1.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: 3a3219f4202e4728b5b1bef342a9cf941676c08f
4
- data.tar.gz: b3f1ae7e0e4140398d08b5bb4584df2804110236
3
+ metadata.gz: d510dd53ca2657a10b5affc6b3b8341901bc8ffa
4
+ data.tar.gz: d3040d129e750287723d1b2dd3de61f510fab3ff
5
5
  SHA512:
6
- metadata.gz: 030b9044013edf8d35fcb21d12274eee16e62279588405cb2f3312574f017043f994a5a99a61a96cc311bb820ba11789fecab005f68857da68702799f6e65338
7
- data.tar.gz: 62c01873c65c8dd7bb2c1b362733f768248483ccfbfe3cad8978d01a8eebe0d7a2eb616cfeb90e9e89dae4093999954c3404c1f8b5814480ae37d85d25326c77
6
+ metadata.gz: c87ea232640e0aa17705fde60ed48c3ac73fc61e08fe19f1af2f275aa58761f42267f9d2e504ff05f0d9809fae81ae3a16b44bee28e5450904ff81bd911bfaba
7
+ data.tar.gz: 3ec7f3d89b496c3d8a534ed652a05a048444bde577bfcaf88dbdee704eb47fa87952fbcd054ed19623d1b0a6268c0651710b044732333e1c867f2df11b876ef8
data/lib/mascot/asset.rb CHANGED
@@ -30,6 +30,10 @@ module Mascot
30
30
  path.basename.to_s.split(".").drop(1)
31
31
  end
32
32
 
33
+ def basename
34
+ path.basename.to_s.split(".").first
35
+ end
36
+
33
37
  # Returns the format extension.
34
38
  def format_extension
35
39
  extensions.first
@@ -53,6 +57,16 @@ module Mascot
53
57
  File.exists? path
54
58
  end
55
59
 
60
+ # Spits out a reasonable default request path. This may be changed
61
+ # via Resource#request_path.
62
+ def to_request_path
63
+ if ext = format_extension
64
+ path.dirname.join(basename).sub_ext(".#{ext}").to_s
65
+ else
66
+ path.to_s
67
+ end
68
+ end
69
+
56
70
  private
57
71
  def frontmatter
58
72
  Frontmatter.new File.read @path
@@ -14,8 +14,8 @@ module Mascot
14
14
  attr_accessor :request_path, :asset
15
15
  attr_writer :body, :data
16
16
 
17
- def initialize(request_path: , asset: )
18
- self.request_path = request_path
17
+ def initialize(asset: , request_path: nil)
18
+ self.request_path = request_path || asset.to_request_path
19
19
  @asset = asset
20
20
  end
21
21
 
@@ -32,7 +32,7 @@ module Mascot
32
32
  # We freeze the value to ensure users can't modify
33
33
  # the request_path string in place (e.g. Resource#request_path.capitalize!)
34
34
  # and throw the resource out of sync with the Resources collection.
35
- @request_path = request_path.dup.freeze
35
+ @request_path = request_path.to_s.freeze
36
36
  changed
37
37
  notify_observers self, old_request_path
38
38
  end
@@ -1,3 +1,6 @@
1
+ require "forwardable"
2
+ require "pathname"
3
+
1
4
  module Mascot
2
5
  class Resources
3
6
  include Enumerable
@@ -18,6 +21,10 @@ module Mascot
18
21
  @routes.values.last
19
22
  end
20
23
 
24
+ def request_paths
25
+ @routes.keys
26
+ end
27
+
21
28
  def glob(pattern = "**/**")
22
29
  paths = safe_root.glob @root_file_path.join(pattern)
23
30
  select { |r| paths.include? r.asset.path.to_s}
@@ -53,7 +60,7 @@ module Mascot
53
60
  end
54
61
 
55
62
  def add_asset(asset, request_path: nil)
56
- add Resource.new asset: asset, request_path: asset_path_to_request_path(request_path || asset.path)
63
+ add Resource.new asset: asset, request_path: asset_path_to_request_path(request_path || asset.to_request_path)
57
64
  end
58
65
 
59
66
  private
@@ -86,8 +93,6 @@ module Mascot
86
93
  def asset_path_to_request_path(path)
87
94
  # Relative path of resource to the file_path of this project.
88
95
  relative_path = Pathname.new(path).relative_path_from(@root_file_path)
89
- # Removes the .fooz.baz
90
- File.join("/", relative_path).to_s.sub(/\..*/, '')
91
96
  end
92
97
 
93
98
  def safe_root
@@ -10,11 +10,12 @@ module Mascot
10
10
  # Default root request path
11
11
  DEFAULT_ROOT_REQUEST_PATH = Pathname.new("/").freeze
12
12
 
13
- attr_reader :root, :request_path
13
+ attr_reader :root, :request_path, :extensions
14
14
 
15
15
  def initialize(root: DEFAULT_ROOT_PATH, request_path: DEFAULT_ROOT_REQUEST_PATH)
16
16
  self.root = root
17
17
  self.request_path = request_path
18
+ @extensions = []
18
19
  end
19
20
 
20
21
  # Lazy stream of files that will be rendered by resources.
@@ -28,6 +29,7 @@ module Mascot
28
29
  def resources
29
30
  Resources.new(root_file_path: root).tap do |resources|
30
31
  assets.each { |a| resources.add_asset a }
32
+ process_resources resources
31
33
  end
32
34
  end
33
35
 
@@ -45,8 +47,12 @@ module Mascot
45
47
  end
46
48
 
47
49
  private
50
+ def process_resources(resources)
51
+ @extensions.each { |exstension| exstension.process_resources(resources) }
52
+ end
53
+
48
54
  def safe_root
49
- @safe_root ||= SafeRoot.new(path: root)
55
+ SafeRoot.new(path: root)
50
56
  end
51
57
  end
52
58
  end
@@ -1,3 +1,3 @@
1
1
  module Mascot
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mascot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-29 00:00:00.000000000 Z
11
+ date: 2016-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler