rfc:intl.char

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
rfc:intl.char [2014/11/25 04:43] – created pollitarfc:intl.char [2015/01/16 17:17] pollita
Line 3: Line 3:
   * Date: 2014-11-24   * Date: 2014-11-24
   * Author: Sara Golemon, pollita@php.net   * Author: Sara Golemon, pollita@php.net
-  * Status: Under Discussion+  * Status: Accepted
   * First Published at: http://wiki.php.net/rfc/intl.char   * First Published at: http://wiki.php.net/rfc/intl.char
  
Line 12: Line 12:
 ===== Proposal ===== ===== Proposal =====
  
-Expose additional ICU functionality from [[http://icu-project.org/apiref/icu4c/uchar_8h.html|uchar.h]] as intl_char_*() and matching oop interface IntlChar::*()+Expose additional ICU functionality from [[http://icu-project.org/apiref/icu4c/uchar_8h.html|uchar.h]] as  IntlChar::*() following the ICU API as much as possible. 
 + 
 +See hphp/runtime/ext/icu/ext_icu_uchar.php in [[https://reviews.facebook.net/D30573]] for a full breakdown of the functions (complete with docblocks).   Constants can be found in either PR's *-enum.h files.
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
  
-PHP 7+PHP 7 (or 5.next if there is one)
  
 ==== New Constants ==== ==== New Constants ====
  
-Enumerations of UProperty, UCharNameChoice, UPropertyNameChoice, UCharDirection, UBlockCode.  For example:+Enumerations of UProperty, UCharNameChoice, UPropertyNameChoice, UCharDirection, UBlockCode, etc...  For example:
  
   class IntlChar {   class IntlChar {
     const PROPERTY_ALPHABETIC = _UCHAR_ALPHABETIC_;     const PROPERTY_ALPHABETIC = _UCHAR_ALPHABETIC_;
     const PROPERTY_ASCII_HEX_DIGIT = _UCHAR_ASCII_HEX_DIGIT_;     const PROPERTY_ASCII_HEX_DIGIT = _UCHAR_ASCII_HEX_DIGIT_;
-    /* etc... */ 
-   
-    const CHARNAME_UNICODE = _U_UNICODE_CHAR_NAME_; 
-    const CHARNAME_UNICODE10 = _U_UNICODE_10_CHAR_NAME_; 
-    const CHARNAME_EXTENDED = _U_EXTENDED_CHAR_NAME_; 
-    const CHARNAME_ALIAS = _U_CHAR_NAME_ALIAS_; 
-   
     /* etc... */     /* etc... */
   }   }
Line 44: Line 39:
     /* etc... */     /* etc... */
   }   }
-   
-  public function intl_char_has_binary_property($cp, $prop) { 
-    return IntlChar::hasBinaryProperty($cp, $prop); 
-  } 
  
-===== Proposed Voting Choices =====+Note that properties taking a codepoint will accept either an integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as UTF-8 (e.g. "\xE2\x98\x83").  For methods which return a codepoint, they will return int unless they accepted a codepoint as a utf-8 string, in which case they remain utf-8. 
 + 
 +===== Notes ===== 
 + 
 +I also added IntlChar::chr() and IntlChar::ord() which aren't directly part of the API, but they made sense as wrappers for the U8_*() family of macros. 
 + 
 +Some methods take a range in the form ($start, $limit) which the range is INclusive of $start, and EXclusive of $limit.  i.e. (0x20, 0x30) => 0x20..0x2F.  I kept this meaning for $limit to stay consistent with the ICU API, but changing $limit to have the semantics of $end would probably make more sense in PHP. 
 + 
 +===== Vote =====
  
-50% + 1: "Merge IntlChar implementation as is?"+<doodle title="Accept the IntlChar RFC and merge into master?" auth="pollita" voteType="single" closed="true"> 
 +   * Yes 
 +   * No 
 +</doodle>
  
-Note that I'll link a pull request from this RFC prior to opening voting, but after discussion has had time to agree on specifics of implementation+  * Voting opened: 2014-12-26 02:20 UTC 
 +  * Voting closed: 2015-01-16 17:20 UTC (3 week voting period)
  
 ===== Implementation ===== ===== Implementation =====
  
-I'll implement this after receiving feedback on the concept.+  * PHP7: [[https://github.com/sgolemon/php-src/compare/intl.uchar|github/sgolemon/php-src/intl.uchar]] 
 +  * HHVM [[https://reviews.facebook.net/D30573]]
rfc/intl.char.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1