blackboard 3.1.6 → 3.1.7

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.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +132 -0
  3. data/exe/jekyll +55 -0
  4. data/lib/jekyll.rb +179 -0
  5. data/lib/jekyll/cleaner.rb +105 -0
  6. data/lib/jekyll/collection.rb +205 -0
  7. data/lib/jekyll/command.rb +65 -0
  8. data/lib/jekyll/commands/build.rb +77 -0
  9. data/lib/jekyll/commands/clean.rb +42 -0
  10. data/lib/jekyll/commands/doctor.rb +114 -0
  11. data/lib/jekyll/commands/help.rb +31 -0
  12. data/lib/jekyll/commands/new.rb +82 -0
  13. data/lib/jekyll/commands/serve.rb +205 -0
  14. data/lib/jekyll/commands/serve/servlet.rb +61 -0
  15. data/lib/jekyll/configuration.rb +348 -0
  16. data/lib/jekyll/converter.rb +48 -0
  17. data/lib/jekyll/converters/identity.rb +21 -0
  18. data/lib/jekyll/converters/markdown.rb +92 -0
  19. data/lib/jekyll/converters/markdown/kramdown_parser.rb +117 -0
  20. data/lib/jekyll/converters/markdown/rdiscount_parser.rb +33 -0
  21. data/lib/jekyll/converters/markdown/redcarpet_parser.rb +102 -0
  22. data/lib/jekyll/converters/smartypants.rb +34 -0
  23. data/lib/jekyll/convertible.rb +300 -0
  24. data/lib/jekyll/deprecator.rb +46 -0
  25. data/lib/jekyll/document.rb +447 -0
  26. data/lib/jekyll/drops/collection_drop.rb +22 -0
  27. data/lib/jekyll/drops/document_drop.rb +60 -0
  28. data/lib/jekyll/drops/drop.rb +200 -0
  29. data/lib/jekyll/drops/excerpt_drop.rb +15 -0
  30. data/lib/jekyll/drops/jekyll_drop.rb +33 -0
  31. data/lib/jekyll/drops/site_drop.rb +38 -0
  32. data/lib/jekyll/drops/unified_payload_drop.rb +25 -0
  33. data/lib/jekyll/drops/url_drop.rb +83 -0
  34. data/lib/jekyll/entry_filter.rb +72 -0
  35. data/lib/jekyll/errors.rb +10 -0
  36. data/lib/jekyll/excerpt.rb +124 -0
  37. data/lib/jekyll/external.rb +59 -0
  38. data/lib/jekyll/filters.rb +367 -0
  39. data/lib/jekyll/frontmatter_defaults.rb +188 -0
  40. data/lib/jekyll/generator.rb +3 -0
  41. data/lib/jekyll/hooks.rb +101 -0
  42. data/lib/jekyll/layout.rb +49 -0
  43. data/lib/jekyll/liquid_extensions.rb +22 -0
  44. data/lib/jekyll/liquid_renderer.rb +39 -0
  45. data/lib/jekyll/liquid_renderer/file.rb +50 -0
  46. data/lib/jekyll/liquid_renderer/table.rb +94 -0
  47. data/lib/jekyll/log_adapter.rb +115 -0
  48. data/lib/jekyll/mime.types +800 -0
  49. data/lib/jekyll/page.rb +180 -0
  50. data/lib/jekyll/plugin.rb +96 -0
  51. data/lib/jekyll/plugin_manager.rb +95 -0
  52. data/lib/jekyll/publisher.rb +21 -0
  53. data/lib/jekyll/reader.rb +126 -0
  54. data/lib/jekyll/readers/collection_reader.rb +20 -0
  55. data/lib/jekyll/readers/data_reader.rb +69 -0
  56. data/lib/jekyll/readers/layout_reader.rb +53 -0
  57. data/lib/jekyll/readers/page_reader.rb +21 -0
  58. data/lib/jekyll/readers/post_reader.rb +62 -0
  59. data/lib/jekyll/readers/static_file_reader.rb +21 -0
  60. data/lib/jekyll/regenerator.rb +175 -0
  61. data/lib/jekyll/related_posts.rb +56 -0
  62. data/lib/jekyll/renderer.rb +194 -0
  63. data/lib/jekyll/site.rb +392 -0
  64. data/lib/jekyll/static_file.rb +141 -0
  65. data/lib/jekyll/stevenson.rb +58 -0
  66. data/lib/jekyll/tags/highlight.rb +122 -0
  67. data/lib/jekyll/tags/include.rb +190 -0
  68. data/lib/jekyll/tags/post_url.rb +88 -0
  69. data/lib/jekyll/url.rb +136 -0
  70. data/lib/jekyll/utils.rb +300 -0
  71. data/lib/jekyll/utils/ansi.rb +59 -0
  72. data/lib/jekyll/utils/platforms.rb +30 -0
  73. data/lib/jekyll/version.rb +3 -0
  74. data/lib/site_template/.gitignore +3 -0
  75. data/lib/site_template/_config.yml +24 -0
  76. data/lib/site_template/_includes/footer.html +38 -0
  77. data/lib/site_template/_includes/head.html +12 -0
  78. data/lib/site_template/_includes/header.html +27 -0
  79. data/lib/site_template/_includes/icon-github.html +1 -0
  80. data/lib/site_template/_includes/icon-github.svg +1 -0
  81. data/lib/site_template/_includes/icon-twitter.html +1 -0
  82. data/lib/site_template/_includes/icon-twitter.svg +1 -0
  83. data/lib/site_template/_layouts/default.html +20 -0
  84. data/lib/site_template/_layouts/page.html +14 -0
  85. data/lib/site_template/_layouts/post.html +15 -0
  86. data/lib/site_template/_pages/about.md +15 -0
  87. data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +25 -0
  88. data/lib/site_template/_sass/_base.scss +206 -0
  89. data/lib/site_template/_sass/_layout.scss +242 -0
  90. data/lib/site_template/_sass/_syntax-highlighting.scss +71 -0
  91. data/lib/site_template/css/main.scss +53 -0
  92. data/lib/site_template/feed.xml +30 -0
  93. data/lib/site_template/index.html +23 -0
  94. data/lib/theme_template/CODE_OF_CONDUCT.md.erb +74 -0
  95. data/lib/theme_template/Gemfile +2 -0
  96. data/lib/theme_template/LICENSE.txt.erb +21 -0
  97. data/lib/theme_template/README.md.erb +46 -0
  98. data/lib/theme_template/Rakefile.erb +74 -0
  99. data/lib/theme_template/_layouts/default.html +1 -0
  100. data/lib/theme_template/_layouts/page.html +5 -0
  101. data/lib/theme_template/_layouts/post.html +5 -0
  102. data/lib/theme_template/example/_config.yml.erb +1 -0
  103. data/lib/theme_template/example/_post.md +12 -0
  104. data/lib/theme_template/example/index.html +14 -0
  105. data/lib/theme_template/example/style.scss +7 -0
  106. data/lib/theme_template/gitignore.erb +4 -0
  107. data/lib/theme_template/theme.gemspec.erb +22 -0
  108. metadata +109 -2
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class CollectionDrop < Drop
6
+ extend Forwardable
7
+
8
+ mutable false
9
+
10
+ def_delegator :@obj, :write?, :output
11
+ def_delegators :@obj, :label, :docs, :files, :directory,
12
+ :relative_directory
13
+
14
+ def to_s
15
+ docs.to_s
16
+ end
17
+
18
+ private
19
+ def_delegator :@obj, :metadata, :fallback_data
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class DocumentDrop < Drop
6
+ extend Forwardable
7
+
8
+ NESTED_OBJECT_FIELD_BLACKLIST = %w{
9
+ content output excerpt next previous
10
+ }.freeze
11
+
12
+ mutable false
13
+
14
+ def_delegator :@obj, :relative_path, :path
15
+ def_delegators :@obj, :id, :output, :content, :to_s, :relative_path, :url
16
+
17
+ def collection
18
+ @obj.collection.label
19
+ end
20
+
21
+ def excerpt
22
+ fallback_data['excerpt'].to_s
23
+ end
24
+
25
+ def previous
26
+ @obj.previous_doc.to_liquid
27
+ end
28
+
29
+ def next
30
+ @obj.next_doc.to_liquid
31
+ end
32
+
33
+ # Generate a Hash for use in generating JSON.
34
+ # This is useful if fields need to be cleared before the JSON can generate.
35
+ #
36
+ # Returns a Hash ready for JSON generation.
37
+ def hash_for_json(state = nil)
38
+ to_h.tap do |hash|
39
+ if state && state.depth >= 2
40
+ hash["previous"] = collapse_document(hash["previous"]) if hash["previous"]
41
+ hash["next"] = collapse_document(hash["next"]) if hash["next"]
42
+ end
43
+ end
44
+ end
45
+
46
+ # Generate a Hash which breaks the recursive chain.
47
+ # Certain fields which are normally available are omitted.
48
+ #
49
+ # Returns a Hash with only non-recursive fields present.
50
+ def collapse_document(doc)
51
+ doc.keys.each_with_object({}) do |(key, _), result|
52
+ result[key] = doc[key] unless NESTED_OBJECT_FIELD_BLACKLIST.include?(key)
53
+ end
54
+ end
55
+
56
+ private
57
+ def_delegator :@obj, :data, :fallback_data
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,200 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class Drop < Liquid::Drop
6
+ include Enumerable
7
+
8
+ NON_CONTENT_METHODS = [:fallback_data, :collapse_document].freeze
9
+
10
+ # Get or set whether the drop class is mutable.
11
+ # Mutability determines whether or not pre-defined fields may be
12
+ # overwritten.
13
+ #
14
+ # is_mutable - Boolean set mutability of the class (default: nil)
15
+ #
16
+ # Returns the mutability of the class
17
+ def self.mutable(is_mutable = nil)
18
+ if is_mutable
19
+ @is_mutable = is_mutable
20
+ else
21
+ @is_mutable = false
22
+ end
23
+ end
24
+
25
+ def self.mutable?
26
+ @is_mutable
27
+ end
28
+
29
+ # Create a new Drop
30
+ #
31
+ # obj - the Jekyll Site, Collection, or Document required by the
32
+ # drop.
33
+ #
34
+ # Returns nothing
35
+ def initialize(obj)
36
+ @obj = obj
37
+ @mutations = {} # only if mutable: true
38
+ end
39
+
40
+ # Access a method in the Drop or a field in the underlying hash data.
41
+ # If mutable, checks the mutations first. Then checks the methods,
42
+ # and finally check the underlying hash (e.g. document front matter)
43
+ # if all the previous places didn't match.
44
+ #
45
+ # key - the string key whose value to fetch
46
+ #
47
+ # Returns the value for the given key, or nil if none exists
48
+ def [](key)
49
+ if self.class.mutable? && @mutations.key?(key)
50
+ @mutations[key]
51
+ elsif self.class.invokable? key
52
+ public_send key
53
+ else
54
+ fallback_data[key]
55
+ end
56
+ end
57
+
58
+ # Set a field in the Drop. If mutable, sets in the mutations and
59
+ # returns. If not mutable, checks first if it's trying to override a
60
+ # Drop method and raises a DropMutationException if so. If not
61
+ # mutable and the key is not a method on the Drop, then it sets the
62
+ # key to the value in the underlying hash (e.g. document front
63
+ # matter)
64
+ #
65
+ # key - the String key whose value to set
66
+ # val - the Object to set the key's value to
67
+ #
68
+ # Returns the value the key was set to unless the Drop is not mutable
69
+ # and the key matches a method in which case it raises a
70
+ # DropMutationException.
71
+ def []=(key, val)
72
+ if respond_to?("#{key}=")
73
+ public_send("#{key}=", val)
74
+ elsif respond_to? key
75
+ if self.class.mutable?
76
+ @mutations[key] = val
77
+ else
78
+ raise Errors::DropMutationException, "Key #{key} cannot be set in the drop."
79
+ end
80
+ else
81
+ fallback_data[key] = val
82
+ end
83
+ end
84
+
85
+ # Generates a list of strings which correspond to content getter
86
+ # methods.
87
+ #
88
+ # Returns an Array of strings which represent method-specific keys.
89
+ def content_methods
90
+ @content_methods ||= (
91
+ self.class.instance_methods - Jekyll::Drops::Drop.instance_methods - NON_CONTENT_METHODS
92
+ ).map(&:to_s).reject do |method|
93
+ method.end_with?("=")
94
+ end
95
+ end
96
+
97
+ # Check if key exists in Drop
98
+ #
99
+ # key - the string key whose value to fetch
100
+ #
101
+ # Returns true if the given key is present
102
+ def key?(key)
103
+ if self.class.mutable && @mutations.key?(key)
104
+ true
105
+ else
106
+ respond_to?(key) || fallback_data.key?(key)
107
+ end
108
+ end
109
+
110
+ # Generates a list of keys with user content as their values.
111
+ # This gathers up the Drop methods and keys of the mutations and
112
+ # underlying data hashes and performs a set union to ensure a list
113
+ # of unique keys for the Drop.
114
+ #
115
+ # Returns an Array of unique keys for content for the Drop.
116
+ def keys
117
+ (content_methods |
118
+ @mutations.keys |
119
+ fallback_data.keys).flatten
120
+ end
121
+
122
+ # Generate a Hash representation of the Drop by resolving each key's
123
+ # value. It includes Drop methods, mutations, and the underlying object's
124
+ # data. See the documentation for Drop#keys for more.
125
+ #
126
+ # Returns a Hash with all the keys and values resolved.
127
+ def to_h
128
+ keys.each_with_object({}) do |(key, _), result|
129
+ result[key] = self[key]
130
+ end
131
+ end
132
+ alias_method :to_hash, :to_h
133
+
134
+ # Inspect the drop's keys and values through a JSON representation
135
+ # of its keys and values.
136
+ #
137
+ # Returns a pretty generation of the hash representation of the Drop.
138
+ def inspect
139
+ require 'json'
140
+ JSON.pretty_generate to_h
141
+ end
142
+
143
+ # Generate a Hash for use in generating JSON.
144
+ # This is useful if fields need to be cleared before the JSON can generate.
145
+ #
146
+ # Returns a Hash ready for JSON generation.
147
+ def hash_for_json(state = nil)
148
+ to_h
149
+ end
150
+
151
+ # Generate a JSON representation of the Drop.
152
+ #
153
+ # Returns a JSON representation of the Drop in a String.
154
+ def to_json(state = nil)
155
+ require 'json'
156
+ JSON.generate(hash_for_json(state), state)
157
+ end
158
+
159
+ # Collects all the keys and passes each to the block in turn.
160
+ #
161
+ # block - a block which accepts one argument, the key
162
+ #
163
+ # Returns nothing.
164
+ def each_key(&block)
165
+ keys.each(&block)
166
+ end
167
+
168
+ def each(&block)
169
+ each_key.each do |key|
170
+ yield key, self[key]
171
+ end
172
+ end
173
+
174
+ def merge(other, &block)
175
+ self.dup.tap do |me|
176
+ if block.nil?
177
+ me.merge!(other)
178
+ else
179
+ me.merge!(other, block)
180
+ end
181
+ end
182
+ end
183
+
184
+ def merge!(other)
185
+ other.each_key do |key|
186
+ if block_given?
187
+ self[key] = yield key, self[key], other[key]
188
+ else
189
+ if Utils.mergable?(self[key]) && Utils.mergable?(other[key])
190
+ self[key] = Utils.deep_merge_hashes(self[key], other[key])
191
+ next
192
+ end
193
+
194
+ self[key] = other[key] unless other[key].nil?
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end
200
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class ExcerptDrop < DocumentDrop
6
+ def layout
7
+ @obj.doc.data['layout']
8
+ end
9
+
10
+ def excerpt
11
+ nil
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class JekyllDrop < Liquid::Drop
6
+ class << self
7
+ def global
8
+ @global ||= JekyllDrop.new
9
+ end
10
+ end
11
+
12
+ def version
13
+ Jekyll::VERSION
14
+ end
15
+
16
+ def environment
17
+ Jekyll.env
18
+ end
19
+
20
+ def to_h
21
+ @to_h ||= {
22
+ "version" => version,
23
+ "environment" => environment
24
+ }
25
+ end
26
+
27
+ def to_json(state = nil)
28
+ require 'json'
29
+ JSON.generate(to_h, state)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class SiteDrop < Drop
6
+ extend Forwardable
7
+
8
+ mutable false
9
+
10
+ def_delegator :@obj, :site_data, :data
11
+ def_delegators :@obj, :time, :pages, :static_files, :documents,
12
+ :tags, :categories
13
+
14
+ def [](key)
15
+ if @obj.collections.key?(key) && key != "posts"
16
+ @obj.collections[key].docs
17
+ else
18
+ super(key)
19
+ end
20
+ end
21
+
22
+ def posts
23
+ @site_posts ||= @obj.posts.docs.sort { |a, b| b <=> a }
24
+ end
25
+
26
+ def html_pages
27
+ @site_html_pages ||= @obj.pages.select { |page| page.html? || page.url.end_with?("/") }
28
+ end
29
+
30
+ def collections
31
+ @site_collections ||= @obj.collections.values.sort_by(&:label).map(&:to_liquid)
32
+ end
33
+
34
+ private
35
+ def_delegator :@obj, :config, :fallback_data
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class UnifiedPayloadDrop < Drop
6
+ mutable true
7
+
8
+ attr_accessor :page, :layout, :content, :paginator
9
+ attr_accessor :highlighter_prefix, :highlighter_suffix
10
+
11
+ def jekyll
12
+ JekyllDrop.global
13
+ end
14
+
15
+ def site
16
+ @site_drop ||= SiteDrop.new(@obj)
17
+ end
18
+
19
+ private
20
+ def fallback_data
21
+ @fallback_data ||= {}
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,83 @@
1
+ # encoding: UTF-8
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class UrlDrop < Drop
6
+ extend Forwardable
7
+
8
+ mutable false
9
+
10
+ def_delegator :@obj, :cleaned_relative_path, :path
11
+ def_delegator :@obj, :output_ext, :output_ext
12
+
13
+ def collection
14
+ @obj.collection.label
15
+ end
16
+
17
+ def name
18
+ Utils.slugify(@obj.basename_without_ext)
19
+ end
20
+
21
+ def title
22
+ Utils.slugify(@obj.data['slug'], :mode => "pretty", :cased => true) ||
23
+ Utils.slugify(@obj.basename_without_ext, :mode => "pretty", :cased => true)
24
+ end
25
+
26
+ def slug
27
+ Utils.slugify(@obj.data['slug']) || Utils.slugify(@obj.basename_without_ext)
28
+ end
29
+
30
+ def categories
31
+ category_set = Set.new
32
+ Array(@obj.data['categories']).each do |category|
33
+ category_set << category.to_s.downcase
34
+ end
35
+ category_set.to_a.join('/')
36
+ end
37
+
38
+ def year
39
+ @obj.date.strftime("%Y")
40
+ end
41
+
42
+ def month
43
+ @obj.date.strftime("%m")
44
+ end
45
+
46
+ def day
47
+ @obj.date.strftime("%d")
48
+ end
49
+
50
+ def hour
51
+ @obj.date.strftime("%H")
52
+ end
53
+
54
+ def minute
55
+ @obj.date.strftime("%M")
56
+ end
57
+
58
+ def second
59
+ @obj.date.strftime("%S")
60
+ end
61
+
62
+ def i_day
63
+ @obj.date.strftime("%-d")
64
+ end
65
+
66
+ def i_month
67
+ @obj.date.strftime("%-m")
68
+ end
69
+
70
+ def short_month
71
+ @obj.date.strftime("%b")
72
+ end
73
+
74
+ def short_year
75
+ @obj.date.strftime("%y")
76
+ end
77
+
78
+ def y_day
79
+ @obj.date.strftime("%j")
80
+ end
81
+ end
82
+ end
83
+ end