From 1993fce4312ef15ee44e4cd26f4d0423f41738de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sun, 20 May 2018 21:38:54 +0200 Subject: [PATCH] Create parameterised include for shuffle panel Also added some liquid extensions --- docs/_includes/custom/shuffle_panel.html | 43 ++++++++++++++++++ .../custom/shuffle_panel_filler.html | 5 +++ docs/_plugins/custom_filters.rb | 13 ++++++ docs/_plugins/eval_tag.rb | 33 ++++++++++++++ docs/css/pmd-customstyles.css | 2 +- docs/index.md | 45 +++++++------------ 6 files changed, 111 insertions(+), 30 deletions(-) create mode 100644 docs/_includes/custom/shuffle_panel.html create mode 100644 docs/_includes/custom/shuffle_panel_filler.html create mode 100644 docs/_plugins/custom_filters.rb create mode 100644 docs/_plugins/eval_tag.rb diff --git a/docs/_includes/custom/shuffle_panel.html b/docs/_includes/custom/shuffle_panel.html new file mode 100644 index 0000000000..d3e59ec169 --- /dev/null +++ b/docs/_includes/custom/shuffle_panel.html @@ -0,0 +1,43 @@ + + + + + + + + + +{% capture titlemaker %} {{ include.titlemaker | or_else: "page.title" }} {% endcapture %} + + +
+
+ + + {% if include.image != "" and include.image != nil %} +
+ + + + +
+ {% endif %} + +
{{ include.title }}
+
+ +

+ {{ include.description }} +

+
    + {% for page in site.pages %} + {% for tag in page.tags %} + {% if tag == include.tag %} +
  • {% eval titlemaker %}
  • + {% endif %} + {% endfor %} + {% endfor %} +
+
+
+
\ No newline at end of file diff --git a/docs/_includes/custom/shuffle_panel_filler.html b/docs/_includes/custom/shuffle_panel_filler.html new file mode 100644 index 0000000000..288ee9836d --- /dev/null +++ b/docs/_includes/custom/shuffle_panel_filler.html @@ -0,0 +1,5 @@ + +
+ + +
diff --git a/docs/_plugins/custom_filters.rb b/docs/_plugins/custom_filters.rb new file mode 100644 index 0000000000..b2fefae571 --- /dev/null +++ b/docs/_plugins/custom_filters.rb @@ -0,0 +1,13 @@ +module CustomFilters + # returns the input if it's a non-blank string, otherwise return default value + def or_else(input, default) + if input + input.strip != "" ? input : default + else + default + end + end + +end + +Liquid::Template.register_filter(CustomFilters) \ No newline at end of file diff --git a/docs/_plugins/eval_tag.rb b/docs/_plugins/eval_tag.rb new file mode 100644 index 0000000000..45fac0ac49 --- /dev/null +++ b/docs/_plugins/eval_tag.rb @@ -0,0 +1,33 @@ + +# This tag takes a variable name as an input, and evaluates its value twice +# (follows one indirection) +# E.g. if the symbol table is E = {"foo" => "bar", "bar" => "baz"}, +# then {% eval foo %} ~> E[E["foo"]] ~> E["bar"] ~> "baz" + +class EvalTag < Liquid::Tag + + def initialize(tag_name, name_expression, tokens) + super + @name_expression = name_expression.strip + end + + + # Lookup allows access to the page/post variables through the tag context + def lookup(context, name) + lookup = context + name.split(".").each {|value| + lookup = lookup[value] + } + lookup + end + + def render(context) + # puts "evaluating: #{@name_expression}" + # puts "1: #{lookup(context, @name_expression)}" + # puts "2: #{lookup(context, lookup(context, @name_expression).strip)}" + lookup(context, lookup(context, @name_expression).strip) + end +end + + +Liquid::Template.register_tag('eval', EvalTag) \ No newline at end of file diff --git a/docs/css/pmd-customstyles.css b/docs/css/pmd-customstyles.css index e3bf9291f4..4b8d9da34c 100644 --- a/docs/css/pmd-customstyles.css +++ b/docs/css/pmd-customstyles.css @@ -9,5 +9,5 @@ } .landing-page.cat-description { - margin-bottom: .5cm; + margin-top: .4cm; } \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 127ad04df6..b5367a0834 100644 --- a/docs/index.md +++ b/docs/index.md @@ -89,35 +89,22 @@ First time user? Then you may be interested in our [quickstart page](TODO). # More details -
-
-
-
- - - - -
-
-
-

Rule references

-
-

- Pick your language to find out about the rule it supports. -

-
    - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "rule_references" %} -
  • {{page.language_name}}
  • - {% endif %} - {% endfor %} - {% endfor %} -
-
-
-
-
+{% include custom/shuffle_panel.html + tag="getting_started" + title="Getting started" %} + + +{% include custom/shuffle_panel.html + tag="rule_references" + title="Rule references" + description="Pick your language to find out about the rule it supports:" + image="fa-database" + titlemaker="page.language_name" %} + +{% include custom/shuffle_panel_filler.html %} + + +