Class: Sprockets::URITar
- Inherits:
-
Object
- Object
- Sprockets::URITar
- Defined in:
- lib/sprockets/uri_tar.rb
Overview
Internal: used to “expand” and “compress” values for storage
Instance Attribute Summary collapse
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
-
#scheme ⇒ Object
readonly
Returns the value of attribute scheme.
Instance Method Summary collapse
-
#absolute_path? ⇒ Boolean
Internal: Tells us if we are using an absolute path.
-
#compress ⇒ Object
Internal: Converts full uri to a “compressed” uri.
-
#compressed_path ⇒ Object
Internal: Returns “compressed” path.
-
#expand ⇒ Object
Internal: Convert a “compressed” uri to an absolute path.
-
#initialize(uri, env) ⇒ URITar
constructor
Internal: Initialize object for compression or expansion.
Constructor Details
#initialize(uri, env) ⇒ URITar
Internal: Initialize object for compression or expansion
uri - A String containing URI that may or may not contain the scheme env - The current “environment” that assets are being loaded into.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/sprockets/uri_tar.rb', line 13 def initialize(uri, env) @root = env.root @env = env uri = uri.to_s if uri.include?("://".freeze) @scheme, _, @path = uri.partition("://".freeze) @scheme << "://".freeze else @scheme = "".freeze @path = uri end end |
Instance Attribute Details
#path ⇒ Object (readonly)
Returns the value of attribute path.
7 8 9 |
# File 'lib/sprockets/uri_tar.rb', line 7 def path @path end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
7 8 9 |
# File 'lib/sprockets/uri_tar.rb', line 7 def root @root end |
#scheme ⇒ Object (readonly)
Returns the value of attribute scheme.
7 8 9 |
# File 'lib/sprockets/uri_tar.rb', line 7 def scheme @scheme end |
Instance Method Details
#absolute_path? ⇒ Boolean
Internal: Tells us if we are using an absolute path
Nix* systems start with a ‘/` like /Users/schneems. Windows systems start with a drive letter than colon and slash like C:/Schneems.
44 45 46 |
# File 'lib/sprockets/uri_tar.rb', line 44 def absolute_path? PathUtils.absolute_path?(path) end |
#compress ⇒ Object
Internal: Converts full uri to a “compressed” uri
If a uri is inside of an environment’s root it will be shortened to be a relative path.
If a uri is outside of the environment’s root the original uri will be returned.
Returns String
35 36 37 |
# File 'lib/sprockets/uri_tar.rb', line 35 def compress scheme + compressed_path end |
#compressed_path ⇒ Object
Internal: Returns “compressed” path
If the input uri is relative to the environment root it will return a path relative to the environment root. Otherwise an absolute path will be returned.
Only path information is returned, and not scheme.
Returns String
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/sprockets/uri_tar.rb', line 84 def compressed_path # windows if !@root.start_with?("/".freeze) && path.start_with?("/".freeze) consistent_root = "/".freeze + @root else consistent_root = @root end if compressed_path = PathUtils.split_subpath(consistent_root, path) compressed_path else path end end |
#expand ⇒ Object
Internal: Convert a “compressed” uri to an absolute path
If a uri is inside of the environment’s root it will not start with a slash for example:
file://this/is/a/relative/path
If a uri is outside the root, it will start with a slash:
file:///This/is/an/absolute/path
Returns String
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/sprockets/uri_tar.rb', line 60 def if absolute_path? # Stored path was absolute, don't add root scheme + path else if scheme.empty? File.join(root, path) else # We always want to return an absolute uri, # make sure the path starts with a slash. scheme + File.join("/".freeze, root, path) end end end |