aboutsummaryrefslogtreecommitdiff
path: root/src/html
AgeCommit message (Collapse)Author
2017-10-05all: revert "all: prefer strings.IndexByte over strings.Index"Marvin Stenger
This reverts https://golang.org/cl/65930. Fixes #22148 Change-Id: Ie0712621ed89c43bef94417fc32de9af77607760 Reviewed-on: https://go-review.googlesource.com/68430 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-09-25all: prefer strings.IndexByte over strings.IndexMarvin Stenger
strings.IndexByte was introduced in go1.2 and it can be used effectively wherever the second argument to strings.Index is exactly one byte long. This avoids generating unnecessary string symbols and saves a few calls to strings.Index. Change-Id: I1ab5edb7c4ee9058084cfa57cbcc267c2597e793 Reviewed-on: https://go-review.googlesource.com/65930 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-09-20html/template: prevent aliasing of parse Trees via AddParseTreeSamuel Tan
Check all associated templates in the set for an existing reference to the given Tree in AddParseTree before assigning that reference to a new or existing template. This prevents multiple html/template Templates from referencing and modifying the same underlying Tree. While there, fix a few existing unit tests so that they terminate upon encountering unrecoverable failures. Fixes #21844 Change-Id: I6b4f6996cf5467113ef94f7b91a6933dbbc21839 Reviewed-on: https://go-review.googlesource.com/64770 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2017-09-18html/template: explain URL filteringSamuel Tan
Expand documentation in of the internal urlFilter function to explain why URLs with schemes other than "http", "https", and "mailto" are filtered out. Fixes #20586 Change-Id: I1f65ff6e15fc4cd325489327c40f8c141904bf5c Reviewed-on: https://go-review.googlesource.com/52853 Reviewed-by: Mike Samuel <mikesamuel@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-08-08html: updated entity spec linkSeiji Takahashi
Fixes #21194 Change-Id: Iac5187335df67f90f0f47c7ef6574de147c2ac9b Reviewed-on: https://go-review.googlesource.com/52970 Reviewed-by: Avelino <t@avelino.xxx> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-07-14html/template: use the same escaper across multiple template executionsSamuel Tan
The escaper contains information about which templates have already been visited and escaped. This information is necessary to prevent templates that have already been escaped from being over-escaped. However, since we currently create a new escaper each time we execute a template, this information does not persist across multiple template executions. Fix this by saving an escaper in each template name space which is shared by all templates in that name space. While there, fix error message formatting for an escaping unit test. Fixes #20842 Change-Id: Ie392c3e7ce0e0a9947bdf56c99e926e7c7db76e4 Reviewed-on: https://go-review.googlesource.com/47256 Reviewed-by: Mike Samuel <mikesamuel@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-14html/template: only search identifier nodes for predefined escapersSamuel Tan
Predefined escapers (i.e. "html" and "urlquery") should only occur in Identifier nodes, and never in Field or Chain nodes, since these are global functions that return string values (see inline comments for more details). Therefore, skip Chain and Field nodes when searching for predefined escapers in template pipelines. Also, make a non-functional change two existing test cases to avoid giving the impression that it is valid to reference a field of a predefined escaper. Fixes #20323 Change-Id: I34f722f443c778699fcdd575dc3e0fd1fd6f2eb3 Reviewed-on: https://go-review.googlesource.com/43296 Reviewed-by: Samuel Tan <samueltan@google.com> Reviewed-by: Mike Samuel <mikesamuel@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-05-05html/template: allow safe usage of predefined escapers in pipelinesSamuel Tan
Allow the predefined escapers "html", "urlquery", and "js" to be used in pipelines when they have no potential to affect the correctness or safety of the escaped pipeline output. Specifically: - "urlquery" may be used if it is the last command in the pipeline. - "html" may be used if it is the last command in the pipeline, and the pipeline does not occur in an unquoted HTML attribute value context. - "js" may be used in any pipeline, since it does not affect the merging of contextual escapers. This change will loosens the restrictions on predefined escapers introduced in golang.org/cl/37880, which will hopefully ease the upgrade path for existing template users. This change brings back the escaper-merging logic, and associated unit tests, that were removed in golang.org/cl/37880. However, a few notable changes have been made: - "_html_template_nospaceescaper" is no longer considered equivalent to "html", since the former escapes spaces, while the latter does not (see #19345). This change should not silently break any templates, since pipelines where this substituion will happen will already trigger an explicit error. - An "_eval_args_" internal directive has been added to handle pipelines containing a single explicit call to a predefined escaper, e.g. {{html .X}} (see #19353). Also, the HTMLEscape function called by the predefined text/template "html" function now escapes the NULL character as well. This effectively makes it as secure as the internal html/template HTML escapers (see #19345). While this change is backward-incompatible, it will only affect illegitimate uses of this escaper, since the NULL character is always illegal in valid HTML. Fixes #19952 Change-Id: I9b5570a80a3ea284b53901e6a1f842fc59b33d3a Reviewed-on: https://go-review.googlesource.com/40936 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-05-05template: warn about interleaved nature of writesDieter Plaetinck
Execute incurs separate writes for each "step", e.g. each variable that needs to be printed, and the final newline. While it is correct to state that templates can be executed concurrently, there is a more subtle nuance that is easily missed: when writing to the same writer, the writes from concurrent execute calls can be interleaved, leading to unexpected output. Change-Id: I0abbd7960d8a8d15e109a8a3eeff3b43b852bbbf Reviewed-on: https://go-review.googlesource.com/37444 Reviewed-by: Rob Pike <r@golang.org>
2017-04-25html/template: use bytes.ContainsAnyDaniel Martí
It was added in Go 1.7. Also gofmt while at it. Change-Id: Idb65fb44e2f2a4365dceea3f833aeb51a8d12333 Reviewed-on: https://go-review.googlesource.com/41692 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-04-20html/template: ignore case when handling type attribute in script elementSamuel Tan
Convert the parsed attribute name to lowercase before checking its value in the HTML parser state machine. This ensures that the type attribute in the script element is handled in a case-sensitive manner, just like all other attribute names. Fixes #19965 Change-Id: I806d8c62aada2c3b5b4328aff75f217ea60cb339 Reviewed-on: https://go-review.googlesource.com/40650 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2017-04-20html/template: ensure that MIME type handling is case insensitiveSamuel Tan
Handle MIME types found in the type attribute of the script element in a case insensitive way, as per Section 5.1 of RFC 2045. Fixes #19968 Change-Id: Ie1416178c937dcf2c96bcec4191cebe7c3477af8 Reviewed-on: https://go-review.googlesource.com/40702 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-10html/template: panic if predefined escapers are found in pipelines during ↵Samuel Tan
rewriting Report an error if a predefined escaper (i.e. "html", "urlquery", or "js") is found in a pipeline that will be rewritten by the contextual auto-escaper, instead of trying to merge the escaper-inserted escaping directives with these predefined escapers. This merging behavior is a source of several security and correctness bugs (eee #19336, #19345, #19352, and #19353.) This merging logic was originally intended to ease migration of text/template templates with user-defined escapers to html/template. Now that migration is no longer an issue, this logic can be safely removed. NOTE: this is a backward-incompatible change that fixes known security bugs (see linked issues for more details). It will explicitly break users that attempt to execute templates with pipelines containing predefined escapers. Fixes #19336, #19345, #19352, #19353 Change-Id: I46b0ca8a2809d179c13c0d4f42b63126ed1c3b49 Reviewed-on: https://go-review.googlesource.com/37880 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2017-03-21text/template,html/template: state that Funcs must happen before parsingRob Pike
Any method that affects the parse must happen before parsing. This obvious point is clear, but it's not clear to some that the set of defined functions affect the parse. Fixes #18971 Change-Id: I8b7f8c8cf85b028c18e5ca3b9797de92ea910669 Reviewed-on: https://go-review.googlesource.com/38413 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-03-07encoding/base64, html/template: fix grammar mistakesKevin Burke
Replace 'does not contains' with 'does not contain' where it appears in the source code. Change-Id: Ie7266347c429512c8a41a7e19142afca7ead3922 Reviewed-on: https://go-review.googlesource.com/37887 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-04html/template: lock in application/json as valid JS testEmmanuel Odeke
CL https://go-review.googlesource.com/33899 added application/json as a mimeType for valid JS. Let's lock that fix in with a test. Updates #18159 Change-Id: Ic4dfd8929aebfc5410f796688f081ca06630f672 Reviewed-on: https://go-review.googlesource.com/33901 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Nodir Turakulov <nodir@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-04html/template: escape JS in application/json script tagNodir Turakulov
Since ffd1c781b77aab542713b66ef387fa9307e4060b HTML templates check MIME type in the "type" attribute of "script" tag to decide if contents should be escaped as JavaScript. The whitelist of MIME types did not include application/json. Include it in this CL. Fixes #18159 Change-Id: I17a8a38f2b7789b4b7e941d14279de222eaf2b6a Reviewed-on: https://go-review.googlesource.com/33899 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-15html/template: fix multiple Clones of redefined templateCaleb Spare
This change redoes the fix for #16101 (CL 31092) in a different way by making t.Clone return the template associated with the t.Name() while allowing for the case that a template of the same name is define-d. Fixes #17735. Change-Id: I1e69672390a4c81aa611046a209008ae4a3bb723 Reviewed-on: https://go-review.googlesource.com/33210 Run-TryBot: Caleb Spare <cespare@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2016-11-14html/template: typo fixMarcel Edmund Franke
comment on unexported function starts with wrong functionname Change-Id: Ib16c2fe42b5a8d4606ed719f620923c17839d091 Reviewed-on: https://go-review.googlesource.com/33203 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-11-12all: spell "marshal" and "unmarshal" consistentlyDmitri Shuralyov
The tree is inconsistent about single l vs double l in those words in documentation, test messages, and one error value text. $ git grep -E '[Mm]arshall(|s|er|ers|ed|ing)' | wc -l 42 $ git grep -E '[Mm]arshal(|s|er|ers|ed|ing)' | wc -l 1694 Make it consistently a single l, per earlier decisions. This means contributors won't be confused by misleading precedence, and it helps consistency. Change the spelling in one error value text in newRawAttributes of crypto/x509 package to be consistent. This change was generated with: perl -i -npe 's,([Mm]arshal)l(|s|er|ers|ed|ing),$1$2,' $(git grep -l -E '[Mm]arshall' | grep -v AUTHORS | grep -v CONTRIBUTORS) Updates #12431. Follows https://golang.org/cl/14150. Change-Id: I85d28a2d7692862ccb02d6a09f5d18538b6049a2 Reviewed-on: https://go-review.googlesource.com/33017 Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-28html/template, text/template: drop defined template list from errorsRuss Cox
The report in #17414 points out that if you have many many templates, then this is an overwhelming list and just hurts the signal-to-noise ratio of the error. Even the test of the old behavior also supports the idea that this is noise: template: empty: "empty" is an incomplete or empty template; defined templates are: "secondary" The chance that someone mistyped "secondary" as "empty" is slim at best. Similarly, the compiler does not augment an error like 'unknown variable x' by dumping the full list of all the known variables. For all these reasons, drop the list. Fixes #17414. Change-Id: I78f92d2c591df7218385fe723a4abc497913acf8 Reviewed-on: https://go-review.googlesource.com/32116 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2016-10-24html/template: add test case for unbounded template expansionRuss Cox
Fixed by CL 31092 already, but that change is a few steps away from the problem observed here, so add an explicit test. Fixes #17019. Change-Id: If4ece1418e6596b1976961347889ce12c5969637 Reviewed-on: https://go-review.googlesource.com/31466 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Quentin Smith <quentin@golang.org>
2016-10-24html/template, text/template: docs and fixes for template redefinitionRuss Cox
All prior versions of Go have allowed redefining empty templates to become non-empty. Unfortunately, that has never consistently taken effect in html/template after the first execution: // define and execute t := template.New("root") t.Parse(`{{define "T"}}{{end}}<a href="{{template "T"}}">`) t.Execute(w, nil) // <a href=""> // redefine t.Parse(`{{define "T"}}my.url{{end}}`) // succeeds, but ignored t.Execute(w, nil) // <a href=""> When Go 1.6 added {{block...}} to text/template, that loosened the redefinition rules to allow redefinition at any time. The loosening was undone a bit in html/template, although inconsistently: // define and execute t := template.New("root") t.Parse(`{{define "T"}}body{{end}}`) t.Lookup("T").Execute(ioutil.Discard, nil) // attempt to redefine t.Parse(`{{define "T"}}body{{end}}`) // rejected in all Go versions t.Lookup("T").Parse("body") // OK as of Go 1.6, likely unintentionally Like in the empty->non-empty case, whether future execution takes notice of a redefinition basically can't be explained without going into the details of the template escape analysis. Address both the original inconsistencies in whether a redefinition would have any effect and the new inconsistencies about whether a redefinition is allowed by adopting a new rule: no parsing or modifying any templates after the first execution of any template in the same set. Template analysis begins at first execution, and once template analysis has begun, we simply don't have the right logic to update the analysis for incremental modifications (and never have). If this new rule breaks existing uses of templates that we decide need to be supported, we can try to invalidate all escape analysis for the entire set after any modifications. But let's wait on that until we know we need to and why. Also fix documentation of text/template redefinition policy (redefinition is always OK). Fixes #15761. Change-Id: I7d58d7c08a7d9df2440ee0d651a5b2ecaff3006c Reviewed-on: https://go-review.googlesource.com/31464 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-10-19html/template: adjust ambiguous URL context textRuss Cox
Before: ... appears in an ambiguous URL context. After: ... appears in an ambiguous context within a URL. It's a minor point, but it's confused multiple people. Try to make clearer that the ambiguity is "where exactly inside the URL?" Fixes #17319. Change-Id: Id834868d1275578036c1b00c2bdfcd733d9d2b7b Reviewed-on: https://go-review.googlesource.com/31465 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-19html/template, text/template: clarify template redefinition behaviorRuss Cox
Make two important points clearer: - Giving a template definition containing nothing but spaces has no effect. - Giving a template definition containing non-spaces can only be done once per template. Fixes #16912. Fixes #16913. Fixes #17360. Change-Id: Ie3971b83ab148b7c8bb800fe4a21579566378e3e Reviewed-on: https://go-review.googlesource.com/31459 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-10-17html/template: fix Clone so that t.Lookup(t.Name()) yields tCaleb Spare
Template.escape makes the assumption that t.Lookup(t.Name()) is t (escapeTemplate looks up the associated template by name and sets escapeErr appropriately). This assumption did not hold for a Cloned template, because the template associated with t.Name() was a second copy of the original. Add a test for the assumption that t.Lookup(t.Name()) == t. One effect of this broken assumption was #16101: parallel Executes racily accessed the template namespace because each Execute call saw t.escapeErr == nil and re-escaped the template concurrently with read accesses occurring outside the namespace mutex. Add a test for this race. Related to #12996 and CL 16104. Fixes #16101 Change-Id: I59831d0847abbabb4ef9135f2912c6ce982f9837 Reviewed-on: https://go-review.googlesource.com/31092 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2016-09-29html/template: check "type" attribute in <script>Nodir Turakulov
Currently any script tag is treated as a javascript container, although <script type="text/template"> must not be. Check "type" attribute of "script" tag. If it is present and it is not a JS MIME type, do not transition to elementScript state. Fixes #12149, where // inside text template was treated as regexp. Fixes #6701 Change-Id: I8fc9e504f7280bdd800f40383c061853665ac8a2 Reviewed-on: https://go-review.googlesource.com/14336 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2016-06-23html/template: update security model linkIan Lance Taylor
Fixes #16148. Change-Id: Ifab773e986b768602476824d005eea9200761236 Reviewed-on: https://go-review.googlesource.com/24327 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-05-18html/template: mention risks of the CSS, HTML, JS, etc. typesAndrew Gerrand
Fixes #15399 Change-Id: I5b9645cb9ddede6981ce0a005e0c6fdd8a751c6f Reviewed-on: https://go-review.googlesource.com/22824 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Minux Ma <minux@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2016-04-22html/template, text/template: clarify Parse{Files,Glob} semanticsAndrew Gerrand
Document the subtle property that files with equivalent base names will overwrite extant templates with those same names. Fixes golang/go#14320 Change-Id: Ie9ace1b08e6896ea599836e31582123169aa7a25 Reviewed-on: https://go-review.googlesource.com/21824 Reviewed-by: Rob Pike <r@golang.org>
2016-04-13html/template: add examples of loading templates from filesEmmanuel Odeke
Adds examples showing loading templates from files and executing them. Shows examples: - Using ParseGlob. - Using ParseFiles. - Using helper functions to share and use templates in different contexts by adding them to an existing bundle of templates. - Using a group of driver templates with distinct sets of helper templates. Almost all of the code was directly copied from text/template. Fixes #8500 Change-Id: Ic3d91d5232afc5a1cd2d8cd3d9a5f3b754c64225 Reviewed-on: https://go-review.googlesource.com/21854 Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-11all: use bytes.Equal, bytes.Contains and strings.Contains, againDominik Honnef
The previous cleanup was done with a buggy tool, missing some potential rewrites. Change-Id: I333467036e355f999a6a493e8de87e084f374e26 Reviewed-on: https://go-review.googlesource.com/21378 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-04-10html: fix typo in UnescapeString string docsBrad Fitzpatrick
Fixes #15221 Change-Id: I9e927a2f604213338b4572f1a32d0247c58bdc60 Reviewed-on: https://go-review.googlesource.com/21798 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-04-10all: replace magic 0x80 with named constant utf8.RuneSelfMartin Möhrmann
Change-Id: Id1c2e8e9d60588de866e8b6ca59cc83dd28f848f Reviewed-on: https://go-review.googlesource.com/21756 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-04-04html/template: prefix the internally-used FuncMap values with an underscoreRob Pike
This makes these names even less likely to collide with a real user-defined function. Fixes #13852. Change-Id: If5a8562c6797ced19c355c7ab2c86fc4401a8674 Reviewed-on: https://go-review.googlesource.com/21490 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-01all: use bytes.Equal, bytes.Contains and strings.ContainsDominik Honnef
Change-Id: Iba82a5bd3846f7ab038cc10ec72ff6bcd2c0b484 Reviewed-on: https://go-review.googlesource.com/21377 Run-TryBot: Dave Cheney <dave@cheney.net> Reviewed-by: Dave Cheney <dave@cheney.net>
2016-03-25all: delete dead non-test codeDominik Honnef
This change removes a lot of dead code. Some of the code has never been used, not even when it was first commited. The rest shouldn't have survived refactors. This change doesn't remove unused routines helpful for debugging, nor does it remove code that's used in commented out blocks of code that are only unused temporarily. Furthermore, unused constants weren't removed when they were part of a set of constants from specifications. One noteworthy omission from this CL are about 1000 lines of unused code in cmd/fix, 700 lines of which are the typechecker, which hasn't been used ever since the pre-Go 1 fixes have been removed. I wasn't sure if this code should stick around for future uses of cmd/fix or be culled as well. Change-Id: Ib714bc7e487edc11ad23ba1c3222d1fd02e4a549 Reviewed-on: https://go-review.googlesource.com/20926 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-02all: single space after period.Brad Fitzpatrick
The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-02-24all: fix typos and spellingMartin Möhrmann
Change-Id: Icd06d99c42b8299fd931c7da821e1f418684d913 Reviewed-on: https://go-review.googlesource.com/19829 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-11-24text/template,html/template: correct comment in DefinedTemplatesRob Pike
The prefix includes a semicolon. Change-Id: I4bdb79aa9931e835e297f3ea2c46a001cd123d56 Reviewed-on: https://go-review.googlesource.com/17200 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-11-23html/template: add DefinedTemplates to html/templateRob Pike
It is not important to add, since it's only used for creating an error message, but for consistency in the API between text/template and html/template it should be provided here. The implementation just calls the one in text/template. Fixes #13349. Change-Id: I0882849e06a58f1e38b00eb89d79ac39777309b2 Reviewed-on: https://go-review.googlesource.com/17172 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-11-22html/template: Add missing error check to package example.Dmitri Shuralyov
This appears to be an unintended omission. The check func is declared just above, and the err value from template.Parse is captured rather than discarded via blank identifier. All following calls that similarly return err are checked, so it can't be that this example elides error checking for brevity. Finally, if you look at Example_autoescaping, it does check err from template.Parse and its code is very similar. Change-Id: I076e1846302d5f2cdb1d027ed85ca0db85e33ace Reviewed-on: https://go-review.googlesource.com/17170 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-11-10html/template, encoding/asn1: fix test errorsDominik Honnef
Change-Id: I1da1d718609eb6a7b78d29b173ec780bde22c687 Reviewed-on: https://go-review.googlesource.com/16422 Reviewed-by: Ralph Corderoy <ralph@inputplus.co.uk> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-10-20html/template: include itself while cloningNodir Turakulov
template.Clone() initialized template set incorrectly: it didn't include itself. * include itself in template set while cloning * add a test Fixes #12996 Change-Id: I932530e4f7f1bbebf833e12b000a5ce052bc9223 Reviewed-on: https://go-review.googlesource.com/16104 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-10-01text/template: change IsTrue to take interface{} instead of reflect.Value.David Symonds
This is a follow-up to a326c3e to avoid reflect being in the API. Fixes #12801. Change-Id: Ic4c2e592e2c35b5911f75d88f1d9c44787c80f30 Reviewed-on: https://go-review.googlesource.com/15240 Run-TryBot: David Symonds <dsymonds@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-09-29text/template, html/template: fix block example nameAndrew Gerrand
Change-Id: I004a43842430201296363a9745480bee94920041 Reviewed-on: https://go-review.googlesource.com/15084 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-09-28text/template, html/template: add block keyword and permit template redefinitionAndrew Gerrand
This change adds a new "block" keyword that permits the definition of templates inline inside existing templates, and loosens the restriction on template redefinition. Templates may now be redefined, but in the html/template package they may only be redefined before the template is executed (and therefore escaped). The intention is that such inline templates can be redefined by subsequent template definitions, permitting a kind of template "inheritance" or "overlay". (See the example for details.) Fixes #3812 Change-Id: I733cb5332c1c201c235f759cc64333462e70dc27 Reviewed-on: https://go-review.googlesource.com/14005 Reviewed-by: Rob Pike <r@golang.org>
2015-09-17text/template: export isTrueRob Pike
The definition of 'truth' used by if etc. is not trivial to compute, so publish the implementation to allow custom template functions to have the same definition as the template language itself. Fixes #12033. Change-Id: Icdfd6039722d7d3f984ba0905105eb3253e14831 Reviewed-on: https://go-review.googlesource.com/14593 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-09-09html/template: preserve attr in stateBeforeValueNodir Turakulov
Context: #12149. The problem there is that contents of <script type="text/template"> are treated as JS, and thus // is treated as regexp. Preserve context.attr while we are in the attribute, in particular in stateBeforeValue, so we have attr when reading attr value. Next CL will actually fix the bug. Change-Id: I99add2237b0885ecdcc08b4f7c25d0af99173e53 Reviewed-on: https://go-review.googlesource.com/14335 Reviewed-by: Rob Pike <r@golang.org>
2015-08-22html: speed up UnescapeStringIngo Oeser
Add benchmarks for for sparsely escaped and densely escaped strings. Then speed up the sparse unescaping part heavily by using IndexByte and copy to skip the parts containing no escaping very fast. Unescaping densely escaped strings slower because of the new function call overhead. But sparsely encoded strings are seen more often in the utf8 enabled web. We win part of the speed back by looking up entityName differently. benchmark old ns/op new ns/op delta BenchmarkEscape 31680 31396 -0.90% BenchmarkEscapeNone 6507 6872 +5.61% BenchmarkUnescape 36481 48298 +32.39% BenchmarkUnescapeNone 332 325 -2.11% BenchmarkUnescapeSparse 8836 3221 -63.55% BenchmarkUnescapeDense 30639 32224 +5.17% Change-Id: If606cb01897a40eefe35ba98f2ff23bb25251606 Reviewed-on: https://go-review.googlesource.com/10172 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>