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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 855b954fbff39058df1927774248f07599450674
4
- data.tar.gz: 50547cd9dded43e9dba24e4fdbbe4ced58a2876e
3
+ metadata.gz: b07878a1bec45459501de9f7dc600d4b5f299e4b
4
+ data.tar.gz: bae4f77020a641de6714b20e16a6b2f49681531d
5
5
  SHA512:
6
- metadata.gz: a4cb5249e0e4f434721858a077b75d3fa05da1372723bb18bb467d5f3530e1e858387baef8ff1d47f1dde4a8b3c1005c3c559dec93e2309b339c6b5a36bfca96
7
- data.tar.gz: 6c179d10fd2438404976b26398f4e59b21c0258bc7827985c51301243f897ed4d44c0fd10e49152a0859c5eba6626c1cabdda1b098892e2e6f071cb409ddc7bc
6
+ metadata.gz: 2cc98b08a52900b5c16e4be075535aa97b72101ea9d09519fcb83849703c35830d531f4ac84bcf480fc6eb7b604512bd5b5f78964c5cf7bc6e3b633844b5317a
7
+ data.tar.gz: 144f30992fb665acf9c07d5ed050fa27c08c79c8f36e848067c4de352a51157735cdeb028644787ec0c49d3192e36189fbc5aabb325b3be1e52c4ae71f4d4f57
data/.rubocop.yml ADDED
@@ -0,0 +1,132 @@
1
+ ---
2
+ AllCops:
3
+ TargetRubyVersion: 2.0
4
+ Include:
5
+ - lib/**/*.rb
6
+ Exclude:
7
+ - lib/jekyll/collection.rb
8
+ - lib/jekyll/configuration.rb
9
+ - lib/jekyll/convertible.rb
10
+ - lib/jekyll/document.rb
11
+ - lib/jekyll/regenerator.rb
12
+ - lib/jekyll/renderer.rb
13
+ - lib/jekyll/utils.rb
14
+ - bin/**/*
15
+ - benchmark/**/*
16
+ - script/**/*
17
+ - vendor/**/*
18
+ Lint/EndAlignment:
19
+ Severity: error
20
+ Lint/UnreachableCode:
21
+ Severity: error
22
+ Lint/UselessAccessModifier:
23
+ Enabled: false
24
+ Metrics/AbcSize:
25
+ Max: 20
26
+ Metrics/ClassLength:
27
+ Max: 300
28
+ Exclude:
29
+ - !ruby/regexp /features\/.*.rb$/
30
+ - !ruby/regexp /test\/.*.rb$/
31
+ Metrics/CyclomaticComplexity:
32
+ Max: 8
33
+ Metrics/LineLength:
34
+ Max: 90
35
+ Severity: warning
36
+ Exclude:
37
+ - !ruby/regexp /features\/.*.rb/
38
+ Metrics/MethodLength:
39
+ Max: 20
40
+ CountComments: false
41
+ Severity: error
42
+ Metrics/ModuleLength:
43
+ Max: 240
44
+ Metrics/ParameterLists:
45
+ Max: 4
46
+ Metrics/PerceivedComplexity:
47
+ Max: 8
48
+ Style/Alias:
49
+ Enabled: false
50
+ Style/AlignArray:
51
+ Enabled: false
52
+ Style/AlignHash:
53
+ EnforcedHashRocketStyle: table
54
+ Style/AlignParameters:
55
+ EnforcedStyle: with_fixed_indentation
56
+ Enabled: false
57
+ Style/AndOr:
58
+ Severity: error
59
+ Style/Attr:
60
+ Enabled: false
61
+ Style/BracesAroundHashParameters:
62
+ Enabled: false
63
+ Style/ClassAndModuleChildren:
64
+ Enabled: false
65
+ Style/Documentation:
66
+ Enabled: false
67
+ Exclude:
68
+ - !ruby/regexp /features\/.*.rb$/
69
+ Style/DoubleNegation:
70
+ Enabled: false
71
+ Style/EmptyLinesAroundAccessModifier:
72
+ Enabled: false
73
+ Style/EmptyLinesAroundModuleBody:
74
+ Enabled: false
75
+ Style/ExtraSpacing:
76
+ AllowForAlignment: true
77
+ Style/FileName:
78
+ Enabled: false
79
+ Style/FirstParameterIndentation:
80
+ EnforcedStyle: consistent
81
+ Style/GuardClause:
82
+ Enabled: false
83
+ Style/HashSyntax:
84
+ EnforcedStyle: hash_rockets
85
+ Severity: error
86
+ Style/IfUnlessModifier:
87
+ Enabled: false
88
+ Style/IndentArray:
89
+ EnforcedStyle: consistent
90
+ Style/IndentHash:
91
+ EnforcedStyle: consistent
92
+ Style/IndentationWidth:
93
+ Severity: error
94
+ Style/ModuleFunction:
95
+ Enabled: false
96
+ Style/MultilineMethodCallIndentation:
97
+ EnforcedStyle: indented
98
+ Style/MultilineOperationIndentation:
99
+ EnforcedStyle: indented
100
+ Style/MultilineTernaryOperator:
101
+ Severity: error
102
+ Style/PercentLiteralDelimiters:
103
+ PreferredDelimiters:
104
+ "%q": "{}"
105
+ "%Q": "{}"
106
+ "%r": "!!"
107
+ "%s": "()"
108
+ "%w": "()"
109
+ "%W": "()"
110
+ "%x": "()"
111
+ Style/RedundantReturn:
112
+ Enabled: false
113
+ Style/RedundantSelf:
114
+ Enabled: false
115
+ Style/RegexpLiteral:
116
+ EnforcedStyle: percent_r
117
+ Style/RescueModifier:
118
+ Enabled: false
119
+ Style/SignalException:
120
+ EnforcedStyle: only_raise
121
+ Style/SingleLineMethods:
122
+ Enabled: false
123
+ Style/SpaceAroundOperators:
124
+ Enabled: false
125
+ Style/SpaceInsideBrackets:
126
+ Enabled: false
127
+ Style/StringLiterals:
128
+ EnforcedStyle: double_quotes
129
+ Style/StringLiteralsInInterpolation:
130
+ EnforcedStyle: double_quotes
131
+ Style/UnneededCapitalW:
132
+ Enabled: false
data/exe/jekyll ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+ STDOUT.sync = true
3
+
4
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w( .. lib )))
5
+
6
+ require "jekyll"
7
+ require "mercenary"
8
+
9
+ Jekyll::PluginManager.require_from_bundler
10
+
11
+ Jekyll::Deprecator.process(ARGV)
12
+
13
+ Mercenary.program(:jekyll) do |p|
14
+ p.version Jekyll::VERSION
15
+ p.description "Jekyll is a blog-aware, static site generator in Ruby"
16
+ p.syntax "jekyll <subcommand> [options]"
17
+
18
+ p.option "source", "-s", "--source [DIR]", "Source directory (defaults to ./)"
19
+ p.option "destination", "-d", "--destination [DIR]",
20
+ "Destination directory (defaults to ./_site)"
21
+ p.option "safe", "--safe", "Safe mode (defaults to false)"
22
+ p.option "plugins_dir", "-p", "--plugins PLUGINS_DIR1[,PLUGINS_DIR2[,...]]", Array,
23
+ "Plugins directory (defaults to ./_plugins)"
24
+ p.option "layouts_dir", "--layouts DIR", String,
25
+ "Layouts directory (defaults to ./_layouts)"
26
+ p.option "profile", "--profile", "Generate a Liquid rendering profile"
27
+
28
+ Jekyll::External.require_if_present(Jekyll::External.blessed_gems) do |g|
29
+ cmd = g.split("-").last
30
+ p.command(cmd.to_sym) do |c|
31
+ c.syntax cmd
32
+ c.action do
33
+ Jekyll.logger.abort_with "You must install the '#{g}' gem" \
34
+ " to use the 'jekyll #{cmd}' command."
35
+ end
36
+ end
37
+ end
38
+
39
+ Jekyll::Command.subclasses.each { |c| c.init_with_program(p) }
40
+
41
+ p.action do |args, _|
42
+ if args.empty?
43
+ Jekyll.logger.error "A subcommand is required."
44
+ puts p
45
+ abort
46
+ else
47
+ subcommand = args.first
48
+ unless p.has_command? subcommand
49
+ Jekyll.logger.abort_with "fatal: 'jekyll #{args.first}' could not" \
50
+ " be found. You may need to install the jekyll-#{args.first} gem" \
51
+ " or a related gem to be able to use this subcommand."
52
+ end
53
+ end
54
+ end
55
+ end
data/lib/jekyll.rb ADDED
@@ -0,0 +1,179 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
2
+
3
+ # Require all of the Ruby files in the given directory.
4
+ #
5
+ # path - The String relative path from here to the directory.
6
+ #
7
+ # Returns nothing.
8
+ def require_all(path)
9
+ glob = File.join(File.dirname(__FILE__), path, '*.rb')
10
+ Dir[glob].sort.each do |f|
11
+ require f
12
+ end
13
+ end
14
+
15
+ # rubygems
16
+ require 'rubygems'
17
+
18
+ # stdlib
19
+ require 'forwardable'
20
+ require 'fileutils'
21
+ require 'time'
22
+ require 'English'
23
+ require 'pathname'
24
+ require 'logger'
25
+ require 'set'
26
+
27
+ # 3rd party
28
+ require 'safe_yaml/load'
29
+ require 'liquid'
30
+ require 'kramdown'
31
+ require 'colorator'
32
+
33
+ SafeYAML::OPTIONS[:suppress_warnings] = true
34
+
35
+ module Jekyll
36
+ # internal requires
37
+ autoload :Cleaner, 'jekyll/cleaner'
38
+ autoload :Collection, 'jekyll/collection'
39
+ autoload :Configuration, 'jekyll/configuration'
40
+ autoload :Convertible, 'jekyll/convertible'
41
+ autoload :Deprecator, 'jekyll/deprecator'
42
+ autoload :Document, 'jekyll/document'
43
+ autoload :Draft, 'jekyll/draft'
44
+ autoload :EntryFilter, 'jekyll/entry_filter'
45
+ autoload :Errors, 'jekyll/errors'
46
+ autoload :Excerpt, 'jekyll/excerpt'
47
+ autoload :External, 'jekyll/external'
48
+ autoload :Filters, 'jekyll/filters'
49
+ autoload :FrontmatterDefaults, 'jekyll/frontmatter_defaults'
50
+ autoload :Hooks, 'jekyll/hooks'
51
+ autoload :Layout, 'jekyll/layout'
52
+ autoload :CollectionReader, 'jekyll/readers/collection_reader'
53
+ autoload :DataReader, 'jekyll/readers/data_reader'
54
+ autoload :LayoutReader, 'jekyll/readers/layout_reader'
55
+ autoload :PostReader, 'jekyll/readers/post_reader'
56
+ autoload :PageReader, 'jekyll/readers/page_reader'
57
+ autoload :StaticFileReader, 'jekyll/readers/static_file_reader'
58
+ autoload :LogAdapter, 'jekyll/log_adapter'
59
+ autoload :Page, 'jekyll/page'
60
+ autoload :PluginManager, 'jekyll/plugin_manager'
61
+ autoload :Publisher, 'jekyll/publisher'
62
+ autoload :Reader, 'jekyll/reader'
63
+ autoload :Regenerator, 'jekyll/regenerator'
64
+ autoload :RelatedPosts, 'jekyll/related_posts'
65
+ autoload :Renderer, 'jekyll/renderer'
66
+ autoload :LiquidRenderer, 'jekyll/liquid_renderer'
67
+ autoload :Site, 'jekyll/site'
68
+ autoload :StaticFile, 'jekyll/static_file'
69
+ autoload :Stevenson, 'jekyll/stevenson'
70
+ autoload :URL, 'jekyll/url'
71
+ autoload :Utils, 'jekyll/utils'
72
+ autoload :VERSION, 'jekyll/version'
73
+
74
+ # extensions
75
+ require 'jekyll/plugin'
76
+ require 'jekyll/converter'
77
+ require 'jekyll/generator'
78
+ require 'jekyll/command'
79
+ require 'jekyll/liquid_extensions'
80
+
81
+ class << self
82
+ # Public: Tells you which Jekyll environment you are building in so you can skip tasks
83
+ # if you need to. This is useful when doing expensive compression tasks on css and
84
+ # images and allows you to skip that when working in development.
85
+
86
+ def env
87
+ ENV["JEKYLL_ENV"] || "development"
88
+ end
89
+
90
+ # Public: Generate a Jekyll configuration Hash by merging the default
91
+ # options with anything in _config.yml, and adding the given options on top.
92
+ #
93
+ # override - A Hash of config directives that override any options in both
94
+ # the defaults and the config file. See Jekyll::Configuration::DEFAULTS for a
95
+ # list of option names and their defaults.
96
+ #
97
+ # Returns the final configuration Hash.
98
+ def configuration(override = Hash.new)
99
+ config = Configuration.new
100
+ unless override.delete('skip_config_files')
101
+ config = config.read_config_files(config.config_files(override))
102
+ end
103
+
104
+ # Merge DEFAULTS < _config.yml < override
105
+ Configuration.from(Utils.deep_merge_hashes(config, override)).tap do |config|
106
+ set_timezone(config['timezone']) if config['timezone']
107
+ end
108
+ end
109
+
110
+ # Public: Set the TZ environment variable to use the timezone specified
111
+ #
112
+ # timezone - the IANA Time Zone
113
+ #
114
+ # Returns nothing
115
+ def set_timezone(timezone)
116
+ ENV['TZ'] = timezone
117
+ end
118
+
119
+ # Public: Fetch the logger instance for this Jekyll process.
120
+ #
121
+ # Returns the LogAdapter instance.
122
+ def logger
123
+ @logger ||= LogAdapter.new(Stevenson.new, (ENV["JEKYLL_LOG_LEVEL"] || :info).to_sym)
124
+ end
125
+
126
+ # Public: Set the log writer.
127
+ # New log writer must respond to the same methods
128
+ # as Ruby's interal Logger.
129
+ #
130
+ # writer - the new Logger-compatible log transport
131
+ #
132
+ # Returns the new logger.
133
+ def logger=(writer)
134
+ @logger = LogAdapter.new(writer, (ENV["JEKYLL_LOG_LEVEL"] || :info).to_sym)
135
+ end
136
+
137
+ # Public: An array of sites
138
+ #
139
+ # Returns the Jekyll sites created.
140
+ def sites
141
+ @sites ||= []
142
+ end
143
+
144
+ # Public: Ensures the questionable path is prefixed with the base directory
145
+ # and prepends the questionable path with the base directory if false.
146
+ #
147
+ # base_directory - the directory with which to prefix the questionable path
148
+ # questionable_path - the path we're unsure about, and want prefixed
149
+ #
150
+ # Returns the sanitized path.
151
+ def sanitized_path(base_directory, questionable_path)
152
+ return base_directory if base_directory.eql?(questionable_path)
153
+
154
+ questionable_path.insert(0, '/') if questionable_path.start_with?('~')
155
+ clean_path = File.expand_path(questionable_path, "/")
156
+ clean_path.sub!(/\A\w\:\//, '/')
157
+
158
+ if clean_path.start_with?(base_directory.sub(/\A\w\:\//, '/'))
159
+ clean_path
160
+ else
161
+ File.join(base_directory, clean_path)
162
+ end
163
+ end
164
+
165
+ # Conditional optimizations
166
+ Jekyll::External.require_if_present('liquid-c')
167
+ end
168
+ end
169
+
170
+ require "jekyll/drops/drop"
171
+ require "jekyll/drops/document_drop"
172
+ require_all 'jekyll/commands'
173
+ require_all 'jekyll/converters'
174
+ require_all 'jekyll/converters/markdown'
175
+ require_all 'jekyll/drops'
176
+ require_all 'jekyll/generators'
177
+ require_all 'jekyll/tags'
178
+
179
+ require 'jekyll-sass-converter'
@@ -0,0 +1,105 @@
1
+ require 'set'
2
+
3
+ module Jekyll
4
+ # Handles the cleanup of a site's destination before it is built.
5
+ class Cleaner
6
+ HIDDEN_FILE_REGEX = /\/\.{1,2}$/
7
+ attr_reader :site
8
+
9
+ def initialize(site)
10
+ @site = site
11
+ end
12
+
13
+ # Cleans up the site's destination directory
14
+ def cleanup!
15
+ FileUtils.rm_rf(obsolete_files)
16
+ FileUtils.rm_rf(metadata_file) unless @site.incremental?
17
+ end
18
+
19
+ private
20
+
21
+ # Private: The list of files and directories to be deleted during cleanup process
22
+ #
23
+ # Returns an Array of the file and directory paths
24
+ def obsolete_files
25
+ (existing_files - new_files - new_dirs + replaced_files).to_a
26
+ end
27
+
28
+ # Private: The metadata file storing dependency tree and build history
29
+ #
30
+ # Returns an Array with the metdata file as the only item
31
+ def metadata_file
32
+ [site.regenerator.metadata_file]
33
+ end
34
+
35
+ # Private: The list of existing files, apart from those included in keep_files and hidden files.
36
+ #
37
+ # Returns a Set with the file paths
38
+ def existing_files
39
+ files = Set.new
40
+ regex = keep_file_regex
41
+ dirs = keep_dirs
42
+
43
+ Utils.safe_glob(site.in_dest_dir, ["**", "*"], File::FNM_DOTMATCH).each do |file|
44
+ next if file =~ HIDDEN_FILE_REGEX || file =~ regex || dirs.include?(file)
45
+ files << file
46
+ end
47
+
48
+ files
49
+ end
50
+
51
+ # Private: The list of files to be created when site is built.
52
+ #
53
+ # Returns a Set with the file paths
54
+ def new_files
55
+ files = Set.new
56
+ site.each_site_file { |item| files << item.destination(site.dest) }
57
+ files
58
+ end
59
+
60
+ # Private: The list of directories to be created when site is built.
61
+ # These are the parent directories of the files in #new_files.
62
+ #
63
+ # Returns a Set with the directory paths
64
+ def new_dirs
65
+ new_files.map { |file| parent_dirs(file) }.flatten.to_set
66
+ end
67
+
68
+ # Private: The list of parent directories of a given file
69
+ #
70
+ # Returns an Array with the directory paths
71
+ def parent_dirs(file)
72
+ parent_dir = File.dirname(file)
73
+ if parent_dir == site.dest
74
+ []
75
+ else
76
+ [parent_dir] + parent_dirs(parent_dir)
77
+ end
78
+ end
79
+
80
+ # Private: The list of existing files that will be replaced by a directory during build
81
+ #
82
+ # Returns a Set with the file paths
83
+ def replaced_files
84
+ new_dirs.select { |dir| File.file?(dir) }.to_set
85
+ end
86
+
87
+ # Private: The list of directories that need to be kept because they are parent directories
88
+ # of files specified in keep_files
89
+ #
90
+ # Returns a Set with the directory paths
91
+ def keep_dirs
92
+ site.keep_files.map { |file| parent_dirs(site.in_dest_dir(file)) }.flatten.to_set
93
+ end
94
+
95
+ # Private: Creates a regular expression from the config's keep_files array
96
+ #
97
+ # Examples
98
+ # ['.git','.svn'] creates the following regex: /\/(\.git|\/.svn)/
99
+ #
100
+ # Returns the regular expression
101
+ def keep_file_regex
102
+ Regexp.union(site.keep_files)
103
+ end
104
+ end
105
+ end