GithubHelp home page GithubHelp logo

tc39 / proposal-string-left-right-trim Goto Github PK

View Code? Open in Web Editor NEW
39.0 14.0 17.0 43 KB

A proposal to the ECMAScript standard for including left and right trim of whitespace to strings

Shell 100.00%

proposal-string-left-right-trim's Introduction

String.prototype.trimStart / String.prototype.trimEnd

ECMAScript proposal, specs, tests, and reference implementation for String.prototype.trimStart/trimEnd (plus trimLeft/trimRight).

Stage 4

This proposal is complete and already merged into ECMA262 specification. See the specification text here.

Rationale

ES5 standardized String.prototype.trim. All major engines have also implemented corresponding trimLeft and trimRight functions - without any standard specification. For consistency with padStart/padEnd we propose trimStart and trimEnd and trimLeft/trimRight as aliases required for web compatibility.

Specification

You can view the spec in ecmarkup or rendered as HTML.

Naming / Aliasing

For consistency with padStart/padEnd the standard functions will be trimStart and trimEnd, however for web compatilibity trimLeft will alias trimStart and trimRight will alias trimEnd. This means String.prototype.trimRight.name will change from "trimRight" to "trimEnd" in most engines. The spec author does not expect this to cause any breakage.

Test262 Coverage

PR open

Status of This Proposal

This initial proposal was drafted by @sebmarkbage and the updated spec was drafted by @evilpie with input from @ljharb.

This proposal is currently at stage 4 of the process.

Designated TC39 reviewers: Jordan Harband + Daniel Ehrenberg

Implementations

proposal-string-left-right-trim's People

Contributors

baptistemanson avatar chicoxyzzy avatar claudepache avatar evilpie avatar feross avatar leobalter avatar mathiasbynens avatar michaelficarra avatar sebmarkbage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

proposal-string-left-right-trim's Issues

Start is not Left!

We should decide which is more important: compatibility or good design?

Left is not allways Start in multilingual text. This is my proposal:

LTR RTL
trimStart == trimLeft trimRight
trimEnd == trimRigth trimLeft

But understand it's not that easy to decide when dealing with bidirectional strings.

Advance to stage 4

Criteria taken from the TC39 process document minus those from previous stages:

  • Test262 acceptance tests have been written for mainline usage scenarios, and merged

PR by @spectranaut: tc39/test262#1246

  • Two compatible implementations which pass the acceptance tests

https://github.com/tc39/proposal-string-left-right-trim#implementations

  • Significant in-the-field experience with shipping implementations, such as that provided by two independent VMs

https://github.com/tc39/proposal-string-left-right-trim#implementations

PR by @evilpie: tc39/ecma262#1275

  • The ECMAScript editor has signed off on the pull request

Have we considered a paramater to the trimX() functions similar to C# usage.

In C# you can very handily use .TrimStart("?"), this will remove specifically a "?" if it is at the beginning. This can be incredibly useful for very common cases where you want to remove starting string characters such as dealing with query urls on the web.
JS eg:

var query = ...;
if(query.indexOf("?") === -1)
    query = query.slice(1);

C# eg:
var query = (...).TrimStart("?");

Not sure if this has already been considered, just been using it a lot lately in C# and thought to check if it could be used in JS.

Todo List

Just some stuff I think we should do before the next meeting

  • Update readme
  • Update markdown version to the new spec
  • Add gh-pages with a rendered version of this proposal
  • Close #3 and #4, they seem to be resolved with my new proposal
  • Get this scheduled for the next meeting
  • Rename this proposal for start/end?
  • Add test262 test
  • Open a pull request to ecma262

@ljharb Can you think of anything else?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.