blackboard 3.1.6 → 3.1.7

Sign up to get free protection for your applications and to get access to all the features.
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