Commit graph

210 commits

Author SHA1 Message Date
Tatsushi Demachi 3b3e771d61 Check for exported fields in embedded structs
This fixes a exported field check condition in a way described at Go
issue https://golang.org/issue/12367

According to the issue comments, this fix should be safe under Go 1.6.
2016-01-28 19:27:35 +09:00
Bjørn Erik Pedersen 75ba84acbf Add int and string cast template funcs 2016-01-15 23:56:45 +01:00
Bjørn Erik Pedersen e8ca52e93a Add one more temporary template test for linux/arm
See #1771
2016-01-13 14:26:25 +01:00
Bjørn Erik Pedersen bca2d38e52 Add temporary template test for linux/arm
See #1771
2016-01-13 14:10:14 +01:00
Ivan Fraixedes 9a6dc6c791 Add embeded template for robots.txt 2016-01-05 23:36:16 +01:00
Daniel Martí 7c5a1fd16b Replace *bytes.Buffer with io.Writer in rendering
Found via github.com/mvdan/interfacer.
2016-01-05 23:32:03 +01:00
Antti Järvinen 9008ac0b55 Rename random to shuffle. Remove count parameteter to simplify its role. Add tests for randomising. 2016-01-04 11:47:37 -05:00
Antti Järvinen 302a6ac701 Add Random function to template functions
Adds Random function to pick N random items from sequence.
2016-01-04 11:38:57 -05:00
Wade Fitzpatrick ff28120e53 Added async version of Google Analytics internal template 2016-01-04 10:33:18 -05:00
digitalcraftsman dfa34afd86 Add template funcs countwords and countrunes 2016-01-02 11:00:03 -05:00
Colin Bate 2e92f36890 Add hasPrefix template function. 2016-01-02 10:47:17 -05:00
Bjørn Erik Pedersen fe7ca7d78c Fix build 2015-12-18 23:23:37 +01:00
Bjørn Erik Pedersen 13d14ab94d Remove "Host:" prefix from Host header
That thould work with Go 1.4.3 according to sources inside Google.
2015-12-18 23:09:50 +01:00
Bjørn Erik Pedersen dd2ab2820e Correct the strings.Contains syntax in failing test 2015-12-18 16:19:00 +01:00
Bjørn Erik Pedersen 31035f8ad1 Fix remote test on Go 1.4 2015-12-18 16:05:24 +01:00
Bjørn Erik Pedersen 89f8fa586c Set the request Host on http test server
Needed for the remote tests to pass on Go 1.6.

See #1470
2015-12-18 15:52:17 +01:00
Anthony Fok 8509727fe8 Add copyright header to that source files that don’t have one.
See #1646
2015-12-10 15:19:38 -07:00
Tatsushi Demachi f3c74c9db4 Add boolean value comparison to where tpl function
`where` template function's internal condition check function doesn't
check boolean values and always returns `false` silently.

This adds missing boolean value comparison to the function.
`where Values ".Param.key" true` like clause can be used.

Only "=", "==", "eq", "!=", "<>", "ne" operators are allowed to be used
with a boolean value. If an other operator is passed with it, the
condition check function returns `false` like before.
2015-12-08 05:39:11 +09:00
Bjørn Erik Pedersen e445c35d6a Fix copyright headers in source files
Still need to add some missing headers and an AUTHORS file.

See #1646
2015-12-07 19:57:01 +01:00
digitalcraftsman 311307c9e4 Add IsNamedParams property in shortcodes 2015-11-24 08:59:32 +01:00
digitalcraftsman 7d31d5f59d Add shortcode for tweets 2015-11-24 08:59:32 +01:00
digitalcraftsman e03f27ccf8 Add shortcode for github gists 2015-11-24 08:59:32 +01:00
digitalcraftsman 3027b15176 Add shortcode for vimeo 2015-11-24 08:59:32 +01:00
digitalcraftsman 4424288d9b Add shortcode for youtube 2015-11-24 08:59:32 +01:00
digitalcraftsman cc3f52b9c1 Add shortcode for speakerdeck 2015-11-24 08:59:31 +01:00
Steve Francia f045d7a611 Change the license to Apache 2.0 2015-11-23 22:16:36 -05:00
Marek Janda afbd52f78e Apply absURL on social tag urls 2015-11-20 23:36:48 +01:00
Cameron Moore c5a4c07b89 Add SafeJS template function
This commit adds a SafeJS template function.  Tests and documentation are
included.

Fixes #1579
2015-11-20 21:12:01 +01:00
Bjørn Erik Pedersen 35abd179e2 Add time.Time support in ge, gt, le, lt
Fixes #1593
2015-11-20 11:53:25 +01:00
Anthony Fok 18a29964fa Fix trivial typos in code 2015-11-16 07:15:17 -07:00
spf13 619c16fd03 re-simplify SafeHTML function 2015-11-15 11:10:35 -05:00
spf13 062f6c3383 rewrite safeHTML function 2015-11-15 11:05:16 -05:00
digitalcraftsman 9dbb6dc50d Add internal Google Analytics template
This commits also adds the GoogleAnalytics
variable to insert the tracking code.

Fixes #1424.
2015-11-04 17:11:38 -05:00
Bjørn Erik Pedersen 4c04d7101a Fix In func given an []interface{}
Fixes #1486
2015-10-13 17:05:36 +02:00
Bjørn Erik Pedersen 17fb752279 Correct number of args to Errorf 2015-10-12 21:34:15 +02:00
Bjørn Erik Pedersen 72f14a8202 Apply project wide go fmt 2015-10-12 20:47:06 +02:00
NotZippy 3a27cefec1 Add dictionary function to be passed into a template
Allows templates to dynamically build maps.

Example usage: Creating and passing a map to a subtemplate while in a range on the parent.
2015-10-09 18:29:16 +02:00
digitalcraftsman 79f8bb625d Add base64Decode and base64Encode template functions
Fixes #1416
2015-09-25 21:31:55 +02:00
Bjørn Erik Pedersen 8d695ec592 Add singularize template func
See #1438
2015-09-22 22:31:02 +02:00
Bjørn Erik Pedersen 751d4906ef Add pluralize template func
Fixes #1438
2015-09-22 22:25:25 +02:00
Bjørn Erik Pedersen dac9c0dae6 Use cast.ToIntE for int conversions in substr and slicestr
It is less restrictive, and it is what is used in other template funcs.
2015-08-15 15:47:16 +02:00
Benny Wu 5b51b3b9fb Slicestr fix for other int type param
Fixes #1347
2015-08-14 17:26:30 +02:00
Bjørn Erik Pedersen cea82842f0 Rename ReadDir to readDir
To make it consistent with the other template funcs.
2015-08-07 14:33:48 +02:00
Tatsushi Demachi 153332706a Make sort tpl func accept field/key chaining arg
'sort' template function used to accept only each element's struct field
name, method name and map key name as its second argument. This extends
it to accept a field/method/key chaining key string like
'Params.foo.bar' as the argument. It evaluates sub elements of each
array or map elements and sorts by them.

Typical use case would be sorting pages by user defined front matter
value. For example, sorting pages by 'Params.foo.bar' is possible by
writing the following template code

    {{ range sort .Data.Pages "Params.foo.bar" }}
        {{ .Content }}
    {{ end }}

It ignores all leading and trailing dots so "Params.foo.bar" can be
written in ".Params.foo.bar"

This also fixes the issue that 'sort' cannot evaluate a pointer value.

Fix #1330
2015-08-07 14:06:06 +02:00
Tatsushi Demachi 56534beaf6 Fix sort tpl func to return explicit type value
sort template function returns `[]interface{}` type slice value
regardless of its original element type.

This fixes it to keep the original element type. For example, if it
sorts `map[string]int` type value, it returns `[]int` slice value
instead of `[]interface{}` slice value.
2015-08-07 14:06:06 +02:00
Bjørn Erik Pedersen c7aa881d90 Fix Unicode issue in Slicestr and Substr
Fixes #1333
2015-08-07 08:52:22 +02:00
Bjørn Erik Pedersen 1583d8d094 Add missing formatting directive in Printf call
To make Go Vet happy.
2015-08-06 22:46:35 +02:00
Bjørn Erik Pedersen 0b7229f7b2 Add some float tests to TestArethmic 2015-08-05 18:55:25 +02:00
Anthony Fok 252ea96d1d Remove deprecated fields and methods for v0.15
Special thanks to @bep for his guidance and
for making sure all of the Hugo themes get updated.

Fixes #1172
2015-07-30 13:33:38 +02:00
Russell Oliver 81e69c416d Add ReadDir function to list local files.
Includes documentation.
2015-07-25 21:56:38 +02:00
Scott C Wilson 8a48412c44 On error, return error message, not nil 2015-07-20 14:49:21 +02:00
Tatsushi Demachi 03a7016104 Let Amber template call Hugo's custom functions
Amber doesn't share text/template `FuncMap` functions and has its own
function list. This allows Amber to call Hugo's custom functions.
2015-07-20 11:29:15 +02:00
Bjørn Erik Pedersen e3ea4b48a2 Fix name logic for Amber templates 2015-07-19 20:12:05 +02:00
Tatsushi Demachi dd732e84f4 Add nil comparison to where tpl function
`where` template function's internal condition check function always
returns `false` when a target value doesn't exist or it's nil value but
this behavior makes it difficult to filter values which doesn't have a
particular parameter.

To solve it, this adds nil value comparison to the function.
`where Values ".Param.key" nil` like clause can be used for the case
above.

Only "=", "==", "eq", "!=", "<>", "ne" operators are allowed to be used
with `nil`. If an other operator is passed with `nil`, the condition
check function returns `false` like before.

Fix #1232
2015-06-29 19:50:45 +02:00
Jonathan Anderson c4ad8f6498 Use helpers.GetThemeDir() to find base templates.
Now that we have the helpers.GetThemeDir() function, use it instead of
calling directly into viper.
2015-06-25 18:05:43 +02:00
Jonathan Anderson 0987e98db3 Add support for baseof.ace templates in themes.
When we find a template that requires a base template, we should also look
for that base template in the current theme.

Fixes #1215.
2015-06-25 18:05:43 +02:00
Ariejan de Vroom 0a2e5424ab Add last template function
`last` allows the user to select the last X items of
and array.
2015-06-15 21:18:38 +02:00
Ariejan de Vroom 627d016cc9 Refactor var name limit to index 2015-06-15 21:18:38 +02:00
Ariejan de Vroom c335efdd06 Add after template function
Where `first` will return the first N items of a rangeable list,
`after` will return all items after the Nth item.

This allows the user to do something with the first N items and
something different with the remaining items after N.
2015-06-15 21:18:38 +02:00
Tatsushi Demachi 51cabe6faf Fix substr tpl func's int type variant issue
`substr` template function takes one or two range arguments. Both
arguments must be int type values but if it is used with a calclation
function e.g. `add`, `len` etc, it causes a wrong type error.

This fixes the issue to allow the function to take other integer type
variant like `int64` etc.

This also includes a small fix on no range argument case.

Fix #1190
2015-06-06 21:03:30 +02:00
Cyrill Schumacher cc5d63c37a GetJSON/GetCSV: Add retry on invalid content
The retry gets triggered when the parsing of the content fails.

Fixes #1166
2015-06-01 12:05:16 +02:00
bep be0314b1d5 Fix Windows Ace path issue
Ace doesn't like Windows style filepath separators.

Fixes #1178
2015-05-31 13:13:21 +02:00
bep e4ed9d6b02 Add some Ace test cases
See #1178
2015-05-31 13:13:28 +02:00
bep be45399cba Extract Ace handling to a method
To prepare for some testing.

See #1178
2015-05-29 11:31:26 +02:00
Tatsushi Demachi 601a2ce124 Add time.Time type support to where tpl func
`where` tpl function doesn't support `time.Time` type so if people want
to compare such values, it's required that these values are converted
into `int` and compare them.

This improves it. If `time.Time` values are passed to `where`, it
converts them into `int` internally, compares them and returns the
result.

See also
http://discuss.gohugo.io/t/future-posts-and-past-posts/1229/3
2015-05-26 15:59:36 +02:00
bep befb54da46 Apply gofmt -s 2015-05-25 12:54:13 +02:00
Juan B. Rodriguez d0a4645a34 Set s.Info.LastChange to Lastmod
Set sitemap.xml <lastmod> field to Lastmod.

See #733
2015-05-15 13:10:11 +02:00
bep bec839e652 Add relURL template func
Fixes #1126
2015-05-11 13:59:02 +02:00
bep be0cbeee7f Add absURL template func
Fixes #1106
2015-05-11 12:28:35 +02:00
bep a52e508d46 Update test logs for uniformity and consistency
Many minor fixes to make test logs more consistent and correct a
mispelling.

Standardize on "[%i] got X but expected Y" for log messages. Using
a consistent layout makes it easier to read the test results. This
was mostly changing "Got" to "got". Swapped the order of values on
several calls to bring them in line with the convention.

A few log messages had a sequence number added to identify the
exact scenario that failed. Otherwise, there would be no way to
ascertain which failed When there are many scenarios.

Correct spelling of "expected."

Fixes #1028
Merged be2097e1ad

[close #1040]
2015-05-08 22:27:00 -04:00
bep be6482603e Disable faulty range validation in apply
Fixed #1098
2015-05-02 11:32:28 +02:00
bep be15927819 tpl: check that types in args match the target func's type
Fixes #1095
2015-05-01 17:00:34 +02:00
bep be7b830f33 tpl: add sanity check to prevent panic in seq on big nums
Fixes #1092
2015-04-30 13:25:46 +02:00
bep be190fdb0d tpl: check for too many arguments in apply
Fixes #1091
2015-04-30 11:41:27 +02:00
bep be017f187e tpl: check slice bounds in slicestr
Fixes #1090
2015-04-30 11:26:45 +02:00
bep be3b8a132b tpl: avoid panic on too few args to apply
Fixes #1089
2015-04-30 10:51:10 +02:00
bep beff680534 Expand the ACE base template lookup pattern
The previous implementation didn't easily support the use case "I want one base template for the single pages, another for the rest".

The new lookup order is:

1. <current-path>/<template-name>-baseof.ace, e.g. list-baseof.ace
2. <current-path>/baseof.ace
3. _default/<template-name>-baseof.ace, e.g. list-baseof.ace.
4. _default/baseof.ace
2015-04-18 13:58:20 +02:00
bep bee52f85ae Fix broken Highlight test 2015-04-16 02:20:10 +02:00
bep be24457acf Add more options to highlight
Fixes #1021
2015-04-15 20:31:06 +02:00
bep be2097e1ad tpl: split template.go
The template funcs get their own file. This prevents having to scroll miles to get to the template infrastructure.
2015-04-05 21:03:12 +02:00
bep be627fa718 Remove paragraph tags produced by markdownify
Fixes #1025
2015-04-01 15:40:09 +02:00
bep be6696c34b Handle views in combo with Ace base templates
As views looks like a regular template, but doesn't need a base template, we have to look inside it.

Altough really not needed by this commit, reading the full file content into memory just to do a substring search is a waste.
So this commit implements a `ReaderContains` func that in most cases should be much faster than doing an `ioutil.ReadAll` and `bytes.Contains`:

```
benchmark                   old ns/op     new ns/op     delta
BenchmarkReaderContains     78452         20260         -74.18%

benchmark                   old allocs     new allocs     delta
BenchmarkReaderContains     46             20             -56.52%

benchmark                   old bytes     new bytes     delta
BenchmarkReaderContains     46496         1258          -97.29%
```

Fixes #999
2015-03-29 21:12:13 +02:00
bep be8c067577 Add support for Ace base and inner templates
Fixes #994
Fixes #511
2015-03-26 17:22:35 +01:00
bep be84f93716 Change to variadic int args in Slicestr
Makes for a better template api.
2015-03-23 19:17:55 +01:00
Anthony Fok 5b0245ca59 Implement substr template function
Its behavior is similar to that in JavaScript
with special handling of negative length as found in in PHP.

Fixes #991
2015-03-23 18:56:58 +01:00
bep beb423a2d9 Rename Slice to Slicestr
Fixes #990
2015-03-23 16:24:15 +01:00
bep be82b5a94f Polish Slice doc 2015-03-23 12:42:54 +01:00
bep be19f4eb91 Rename Substr to Slice
That is whas was implemented, not Substr.

Also make the API more similar to Go's internal slice by making both the start and end indices optional.

See #990
2015-03-23 12:18:27 +01:00
bep be4fe8f8af Polish Substr and Split tests 2015-03-22 13:52:22 +01:00
Xin Fan 04817c7b83 Add Substr and Split template functions
Both of these can take any type the cast lib can turn into a string.
2015-03-22 13:24:47 +01:00
bep a8bfaba081 template: add some missing test cases for First 2015-03-18 20:47:10 +01:00
Anthony Fok 8b8fb417ae More initialism corrections (golint)
Thanks to @bep's new, brilliant helpers.Deprecated() function,
the following functions or variables are transitioned to their
new names, preserving backward compatibility for v0.14
and warning the user of upcoming obsolescence in v0.15:

 * .Url → .URL (for node, menu and paginator)
 * .Site.BaseUrl → .Site.BaseURL
 * .Site.Indexes → .Site.Taxonomies
 * .Site.Recent → .Site.Pages
 * getJson → getJSON
 * getCsv → getCSV
 * safeHtml → safeHTML
 * safeCss → safeCSS
 * safeUrl → safeURL

Also fix related initialisms in strings and comments.

Continued effort in fixing #959.
2015-03-18 11:30:37 +01:00
quoha a044734541 Add "getenv" as an wrapper for os.Getenv
Add a wrapper for the os.Getenv function. The
wrapper takes as input a string that is assumed to be an exported
variable name.

Fixes #977
2015-03-16 18:38:43 +01:00
bep 27ed49e532 Revert "Added image support to the sitemap.xml template"
This reverts commit 3c147bd419.

Fixes #972
2015-03-14 00:03:34 +01:00
Derek Perkins 3c147bd419 Added image support to the sitemap.xml template
Conflicts:
	tpl/template_embedded.go
2015-03-12 22:13:42 -04:00
bep 0be2aade99 Add Seq template func
Very similar to GNU's seq.

Fixes #552

Conflicts:
	tpl/template.go
2015-03-12 22:08:36 -04:00
Anthony Fok 67df33f500 Correct initialisms as suggested by golint
First step to use initialisms that golint suggests,
for example:

    Line 116: func GetHtmlRenderer should be GetHTMLRenderer

as see on http://goreportcard.com/report/spf13/hugo

Thanks to @bep for the idea!

Note that command-line flags (cobra and pflag)
as well as struct fields like .BaseUrl and .Url
that are used in Go HTML templates need more work
to maintain backward-compatibility, and thus
are NOT yet dealt with in this commit.

First step in fixing #959.
2015-03-11 21:55:00 +01:00
bep 00f07c5374 doArithmetic: add test for division by zero 2015-03-11 10:25:53 +01:00
bep 43742e0277 Add some basic tests for doArithmetic
We might have to take precision into account for floating point nubers ... at some point.
2015-03-11 01:30:41 +01:00
Anthony Fok 3ba279c2e5 Do not parse backup files with trailing '~' as templates
Fixes #964
2015-03-10 10:18:40 -06:00