Commit c90ca30c authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Improve hashed JS/CSS files creation.

The template.html, index-template.html and print-template.html now
all reference the same CSS files, allowing us to generate an hashed
app.css from it which in all three cases results in exactly the same
hash - so instead of three files we get just one CSS file.

Include prettify library also to concatenated CSS/JS.

Fix how JsDuck::TemplateDir copies over the files - ensuring that
it also copies the files containing MD5 hash in their names.
parent 1cf46091
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -46,23 +46,21 @@ end
# Deletes those input CSS files and writes out concatenated CSS to
# resources/css/app.css
# Finally replaces the CSS section with <link> to that one CSS file.
def combine_css(html, dir, opts = :write)
def combine_css(html, dir)
  css_section_re = /<!-- BEGIN CSS -->.*<!-- END CSS -->/m
  css = []
  css_section_re.match(html)[0].each_line do |line|
    if line =~ /<link rel="stylesheet" href="(.*?)"/
      file = $1
      css << IO.read(dir + "/" + file)
      system("rm", dir + "/" + file) if opts == :write
    end
  end

  fname = "#{dir}/resources/css/app.css"
  if opts == :write
  File.open(fname, 'w') {|f| f.write(css.join("\n")) }
  yui_compress(fname)
  fname = JsDuck::Util::MD5.rename(fname)
  end

  html.sub(css_section_re, '<link rel="stylesheet" href="resources/css/' + File.basename(fname) + '" type="text/css" />')
end

@@ -74,9 +72,6 @@ def combine_js(html, dir)
    if line =~ /<script .* src="(.*)">/
      file = $1
      js << IO.read(dir + "/" + file)
      if file !~ /ext\.js/
        system("rm", dir + "/" + file)
      end
    elsif line =~ /<script .*>(.*)<\/script>/
      js << $1
    end
@@ -91,10 +86,9 @@ def combine_js(html, dir)
end

# Modifies HTML to link app.css.
# Doesn't modify the linked CSS files.
def rewrite_css_links(dir, filename)
  html = IO.read(dir + "/" + filename);
  html = combine_css(html, dir, :replace_html_only)
  html = combine_css(html, dir)
  File.open(dir + "/" + filename, 'w') {|f| f.write(html) }
end

@@ -135,6 +129,8 @@ def compress

  # Clean up SASS files
  # (But keep prettify lib, which is needed for source files)
  system "rm -rf #{dir}/resources/css/docs-ext.css"
  system "rm -rf #{dir}/resources/css/viewport.css"
  system "rm -rf #{dir}/resources/sass"
  system "rm -rf #{dir}/resources/codemirror"
  system "rm -rf #{dir}/resources/.sass-cache"
+3 −4
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ module JsDuck
      @opts = opts
      @files = [
        "app",
        "app.js",
        "app*.js",
        "favicon.ico",
        "extjs",
        "resources",
@@ -38,9 +38,8 @@ module JsDuck
    # moves files from one dir to another using a method of FileUtils module.
    def move_files(method)
      @files.each do |file|
        source = File.expand_path(@opts.template_dir+"/"+file)
        target = File.expand_path(@opts.output_dir+"/"+file)
        if File.exists?(source)
        target = File.expand_path(@opts.output_dir)
        Dir.glob(File.expand_path(@opts.template_dir+"/"+file)).each do |source|
          FileUtils.send(method, source, target)
        end
      end
+2 −0
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@
  <!-- BEGIN CSS -->
  <link rel="stylesheet" href="resources/css/docs-ext.css" type="text/css" />
  <link rel="stylesheet" href="resources/css/viewport.css" type="text/css" />
  <link rel="stylesheet" href="resources/codemirror/codemirror.css" type="text/css" />
  <link rel="stylesheet" href="resources/prettify/prettify.css" type="text/css" />
  <!-- END CSS -->
  <script type="text/javascript">
  (function(){
+2 −1
Original line number Diff line number Diff line
@@ -8,8 +8,9 @@
  <!-- BEGIN CSS -->
  <link rel="stylesheet" href="resources/css/docs-ext.css" type="text/css" />
  <link rel="stylesheet" href="resources/css/viewport.css" type="text/css" />
  <!-- END CSS -->
  <link rel="stylesheet" href="resources/codemirror/codemirror.css" type="text/css" />
  <link rel="stylesheet" href="resources/prettify/prettify.css" type="text/css" />
  <!-- END CSS -->
  <script type="text/javascript">
  (function(){
    var protocol = (document.location.protocol === "https:") ? "https:" : "http:";
+2 −2
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@
  <link rel="stylesheet" href="resources/css/docs-ext.css" type="text/css" />
  <link rel="stylesheet" href="resources/css/viewport.css" type="text/css" />
  <link rel="stylesheet" href="resources/codemirror/codemirror.css" type="text/css" />
  <!-- END CSS -->
  <link rel="stylesheet" href="resources/prettify/prettify.css" type="text/css" />
  <!-- END CSS -->
  <script type="text/javascript">
  (function(){
    var protocol = (document.location.protocol === "https:") ? "https:" : "http:";
@@ -31,8 +31,8 @@
  <script type="text/javascript" src="resources/codemirror/xml.js"></script>
  <script type="text/javascript" src="resources/codemirror/markdown.js"></script>
  <script type="text/javascript" src="app.js"></script>
  <!-- END JS -->
  <script type="text/javascript" src="resources/prettify/prettify.js"></script>
  <!-- END JS -->

  {head_html}