Comments (10)
This comment was originally written by [email protected]
Sorry, I can't find a way to change type nor priority. I guess owners will have to change them by hand. It is of course not a "defect", but a design consideration that may definitely be voluntary.
from sdk.
This comment was originally written by [email protected]
Removed Type-Defect label.
Added Type-Enhancement, Area-Language, Triaged labels.
from sdk.
This comment was originally written by [email protected]
Python, for example, has the same behavior of allowing either quote.
from sdk.
Current Dart code heavily relies on the fact that single-quoted strings do interpolate:
new Element.html('<canvas width="${img.width}" height="${img.height}"></canvas>');
I think the current behavior is desirable for building markup which often contains both double quotes and interpolation.
from sdk.
This comment was originally written by [email protected]
I guess HTML construction is a good-enough argument to get rid of the earlier languages conventions :)
from sdk.
Sounds like we've convinced you there is good reason for the currently specified behavior. I'll close the issue then.
Set owner to @gbracha.
Added WontFix label.
from sdk.
This comment was originally written by [email protected]
Sigh, I wish the perl model was more prolific so it wouldn't maintain it's perpetual rep as unreadible (try showing C if-structures to a business major) - as I honestly think it's the only one that got this right. String processing is one of the primary functions of most languages and C derivatives make this the most painful thing you can do.
"fully-interpolable-text"
'non-interpolable except for escape chars'
qq(fully-interpolable-text) // can use () <> {} [], whatever has least escape pain
q(non-interpolable) // same as qq
qw(one two three) // white-space becomes a list instead of a scalar
<<EOS
Multi-line
string
fully interpolated
EOS
<<'EOS'
Multi-line
no interpolation
EOS
Where EOS is replaced by something not found in text-body.
The point isn't the particular symantics used, but the fact that no matter what solution a language provides to minimize unexpected escaping and multi-line issues, unless you allow some kind of escape-friendliness your language will suck for templating of any sort. And I've done a LOT of javascript-side templating that is practically torturous; sometimes requiring CDATA blocks (which destroy intelligent editors). The compiler is the perfect place to accept arbitrary text and escape into simple javascript string-concatenation routines.
from sdk.
This comment was originally written by [email protected]
Dart supports all of these but qw, just slightly different syntax.
from sdk.
This comment was originally written by [email protected]
Ok.. I've gone through the antlr. The PDF should provide a reference similar to the following (probably using a table for the string comparison section)
two = 2
// following is pseudo code: exact-ext == dart-expression
123 == "1${two}3"
123 == '1${two}3'
1${two}3 == @"1${two}3"
1${two}3 == @'1${two}3'
1'23 == "1'${two}3"
1"23 == '1"${two}3"
ERROR == "1"${two}3"
ERROR == '1'${two}3'
1'23 == '1'${two}3'
1"23 == "1"${two}3"
ERROR == @'1'${two}3'
ERROR == @"1"${two}3"
ERROR == @'1'${two}3'
ERROR == @"1"${two}3"
1'23 == '''1'${two}3'''
1"23 == """1"${two}3"""
1'23 == '''1'${two}3'''
1"23 == """1"${two}3"""
1'${two}3 == @'''1'${two}3'''
1"${two}3 == @"""1"${two}3"""
1'${two}3 == @'''1'${two}3'''
1"${two}3 == @"""1"${two}3"""
Such that """ and ''' also support new-lines.
So I agree that qq(xx) is similar to '''xx''' and q(xx) is similar to @'''xx'''
And you can KIND of get <<EOS variance by alternating ''' v.s. """.
The main thing it's missing is the ability to safely embed dart code inside a dart string (e.g. textual recursion). Again, a foreign concept to the c-world. But with AJAX based web services that can pass code as arguments, this is CRITICAL and a major failing of existing javascript frameworks.. trimpath, again has horrid reliability given HTML and javascript failings. I would STRONGLY recommend supporting here-documents in dart.
Given the operator overloading, I totally understand not leveraging <<EOS syntax. But how about (I appologize for my lack of memory of antler):
STRING : '@'? MULTI_LINE_STRING
| SINGLE_LINE_STRING
| CDATA_BLOCK
| @CDATA_BLOCK
;
fragment CDATA_BLOCK: "CDATA" '<' identifier '>' (options{greedy=false): .* ) NEWLINE '<' $3 '>' NEWLINE
;
from sdk.
This comment was originally written by [email protected]
oops, means
STRING : '@'? MULTI_LINE_STRING
| SINGLE_LINE_STRING
| '@'? CDATA_BLOCK
;
token {
CDATA : "CDATA"
}
fragment CDATA_BLOCK: CDATA '<' identifier '>' NEWLINE (options{greedy=false): .* ) NEWLINE '<' $3 '>' NEWLINE
;
Also should include the following examples:
1"${two}3 == @'1"${two}3'
1"""23 == """1"""${two}3""";
1"""${two}3 == @"""1"""${two}3""";
ERROR == """1"""${two}3""";
from sdk.
Related Issues (20)
- `ConstructorDefinitionBuilder.augment` cannot augment factory constructor
- [vm] Dart AOT runtime should refuse to run snapshots with incompatible sanitizers HOT 2
- [vm] gen_snapshot without santizers should be able to create AOT snapshots to be used with AOT runtimes with sanitizers HOT 1
- [CRASH] `dart run` fails logging `Compilation did not produce any result...` and crashes with `PathNotFoundException` HOT 5
- allow to destructure record types with positional fields HOT 8
- [analyzer] add warning when abstract interface class has unused implementation.
- [analyzer] incorrectly marking as dead code when accessing record property in ternary
- Breakpoints skipped in tests when injecting late initialized dependency. HOT 2
- Function argument rejected based on faulty inferred parameter type
- AOT compilation runs into speculative input use by `CalculateElementAddressInstr` HOT 1
- Analyzer Feedback from IntelliJ
- Type inference for abstract classes with recurring generics can't be inferred HOT 9
- The front end is not happy about wrong constructor declaration
- The front end is not happy about wrong extension type constructor declaration
- pkg/analyzer/test/src/dart/resolution/augmented_invocation_test fails with RuntimeError on analyzer-asserts-win bot HOT 2
- Code completion suggestions are irrelevant / context unaware HOT 2
- [Wildcard Variables] Language Tests in `tests/language` HOT 3
- [Wildcard Variables] All tests in `tests/language` and co19 passing.
- [Wildcard Variables] Experiment Flag HOT 2
- [Wildcard Variables] CFE Implementation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdk.