Useful API Functions: Unterschied zwischen den Versionen
Cg (Diskussion | Beiträge) |
Cg (Diskussion | Beiträge) |
||
(211 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
This document lists most useful (and most often needed) classes and functions. |
|||
== String == |
|||
Be aware, that there are many more to be found in either the class references or via the builtin [[Tools_ClassBrowser/en | class browser]]. |
|||
== [[String API Functions | String]] == |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,String String Class Documentation] |
|||
<br>[http://live.exept.de/ClassDoc/classDocOf:,CharacterArray CharacterArray] (superclass) |
|||
<br>[http://live.exept.de/ClassDoc/classDocOf:,Collection Collection] (superclass) |
|||
Strings are sequences of characters. Expecco uses and supports the Unicode encoding standard and supports the whole unicode range. <br>However, not all fonts will contain all characters, resulting in some missing characters being drawn with a replacement char (typically a box-like rectangle) in text windows.<br>The concrete details depend on the operating system and the set of installed fonts. |
|||
String instances inherit a lot of functionality from String's superclasses: SequenceableCollection and Collection. Thus, all functions found there (enumeration, mapping, filtering, searching etc.) can also be applied to strings. |
|||
=== Copying === |
|||
Read more: [[String_API_Functions|String API Functions]]<br> |
|||
Notice: except when written otherwise, all indices are 1-based. Valid indices range from 1 to the string's size. |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,String String] |
|||
inherits from: [http://live.exept.de/ClassDoc/classDocOf:,CharacterArray CharacterArray] and |
|||
[http://live.exept.de/ClassDoc/classDocOf:,SequenceableCollection SequenceableCollection] and [http://live.exept.de/ClassDoc/classDocOf:,Collection Collection] |
|||
== [[Collection API Functions | Collection]] == |
|||
===== copyFrom:to: ===== |
|||
Copies characters from a start index to an end index. |
|||
Collection is an abstract class, serving as a superclass for a number of useful concrete classes (such as Set, Dictionary, Tree, SortedCollection, String etc.) |
|||
''aString'' copyFrom:''startIndex'' to:''endIndex'' |
|||
It is useful to get a feeling of the set of operations provided there (there are a lot!), so you should not have to reinvent the wheel. |
|||
''aString''.copyFrom_to(''startIndex'', ''endIndex'') [JS] |
|||
Read more: [[Collection_API_Functions|Collection API Functions]]<br> |
|||
Example: |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,Collection Collection] |
|||
'hello world' copyFrom:1 to:5. |
|||
=> 'hello' |
|||
== [[Filename API Functions | Filename]] == |
|||
===== copyFrom:count: ===== |
|||
Copies a number of characters starting at the given index. |
|||
Although strings could be used to represent file names and pathes, expecco uses instances of a specialized class called "''Filename''" to represent those. Filename instances know about any details of the underlying operating system (such as the directory separator, any naming restrictions etc.) and also provide a number of useful functions for file and directory access. Filename provides a portable representation, so that code can run on both Windows and Unix unchanged (that is: use "/" in filenames when possible. On a Windows machine, these will be replaced internally by "\" characters). |
|||
''aString'' copyFrom:''startIndex'' count:''numChars'' |
|||
''aString''.copyFrom_count(''startIndex'', ''numChars'') [JS] |
|||
Read more: [[Filename_API_Functions|Filename API Functions]]<br> |
|||
Example: |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,Filename Filename] |
|||
'hello world' copyFrom:7 count:3. |
|||
=> 'wor' |
|||
== [[Stream API Functions | Stream]] == |
|||
===== copyFrom: ===== |
|||
Copies from the given index to the end. |
|||
Streams can be internal (eg. reading from a String) or external (eg. a file stream, pipe or socket). Streams can be used to read bytewiese, character wise (with optional UTF decoding/encoding) or object-wise. |
|||
''aString'' copyFrom:''startIndex''' |
|||
Most uses are with external streams, which are byte or character oriented: FileStream, PipeStream, Socket are examples. |
|||
''aString''.copyFrom(''startIndex'') [JS] |
|||
Read more: [[Stream_API_Functions|Stream API Functions]]<br> |
|||
Example: |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,Stream Stream] |
|||
'hello world' copyFrom:6. |
|||
=> ' world' |
|||
== [[Number API Functions | Number]] == |
|||
===== copyTo: ===== |
|||
Copies from the start to the given index. |
|||
Expecco supports a full numeric stack of numbers; both exact (integers and fractions) and inexact (IEEE floats in various precisions). Integer operations do not overflow or loose bits: expecco will automatically choose an appropriate representation to eg. be able to represent huge numbers. |
|||
''aString'' copyTo:''endIndex'' |
|||
''aString''.copyTo(''endIndex'') [JS] |
|||
Read more: [[Number_API_Functions|Number API Functions]]<br> |
|||
Example: |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,Number Number] and its subclasses |
|||
'hello world' copyTo:6. |
|||
[http://live.exept.de/ClassDoc/classDocOf:,Integer Integer], |
|||
=> 'hello ' |
|||
[http://live.exept.de/ClassDoc/classDocOf:,Float Float], |
|||
[http://live.exept.de/ClassDoc/classDocOf:,Fraction Fraction], |
|||
[http://live.exept.de/ClassDoc/classDocOf:,FixedPoint ScaledDecimal], |
|||
[http://live.exept.de/ClassDoc/classDocOf:,Complex Complex] |
|||
== [[Date & Time]] == |
|||
===== copyBetween:and:caseSensitive: ===== |
|||
Expecco provides a number of time related support classes: TimeDuration, Time, Date and Timestamp (aka. ''TimeAndDate'') for local, UTC and timezone specific. Although timestamps support picosecond precision, current operating systems will only provide milli or microsecond resolution timestamps. However finer resolution values may come from exact measurement devices or be computed in technical/physical processes. |
|||
Finds two substrings and copies the part between them. |
|||
Read more: [[Date_and_Time_API_Functions|Date and Time API Functions]]<br> |
|||
''aString'' copyBetween:''leftString'' and:''rightString'' caseSensitive:''boolean'' |
|||
Reference: [http://live.exept.de/ClassDoc/classDocOf:,Date Date], [http://live.exept.de/ClassDoc/classDocOf:,Time Time], [http://live.exept.de/ClassDoc/classDocOf:,Timestamp Timestamp], [http://live.exept.de/ClassDoc/classDocOf:,UtcTimestamp UtcTimestamp], [http://live.exept.de/ClassDoc/classDocOf:,TZTimestamp TZTimestamp], [http://live.exept.de/ClassDoc/classDocOf:,TimeDuration TimeDuration]. |
|||
''aString''.copyBetween_and_caseSensitive(''leftString'', ''rightString'', ''boolean'') [JS] |
|||
== [[PhysicalValues/en|Physical Values]] == |
|||
Example: |
|||
Since 20.1, expecco supports an additional framework to represent physical values, such as mass (in kg), length (in meters), velocity, [[PhysicalValues/en#Acceleration|acceleration]], voltage, electric current etc. |
|||
'hello small world' copyBetween:'hello' and:'world' caseSensitive:true |
|||
<br>Beside being able to do arithmetic as in <code>3.0 kiloMeter / 20 minutes</code> (which gives "2.5 m/s") they can also be used for conversion between metric and imperial unit systems (eg. "<code>10 nauticalMiles asMeters</code>" gives the answer "18520 m" and "<code>15 inches asMilliMeters</code>" returns "381 mm"). |
|||
=> ' small ' |
|||
Read more: [[PhysicalValues/en|PhysicalValues]]<br> |
|||
'helloworld' copyBetween:'hello' and:'world' caseSensitive:true |
|||
=> '' |
|||
== [[Cryptographic_API_Functions/en | Cryptography]] == |
|||
'hello small World' copyBetween:'hello' and:'world' caseSensitive:true |
|||
=> nil |
|||
Algorithms for hashing, encryption and decryption, certificate handling etc. |
|||
'hello small World' copyBetween:'hello' and:'world' caseSensitive:false |
|||
=> ' small ' |
|||
Read more: [[Cryptographic_API_Functions/en|Cryptographic API Functions]]<br> |
|||
===== copyReplaceString:withString: ===== |
|||
''aString'' copyReplaceString:''oldString'' withString:''newString'' |
|||
''aString''.copyReplaceString_withString(''oldString'', ''newString'') [JS] |
|||
Example: |
|||
'hello small world' copyReplaceString:'small' withString:'big' |
|||
=> ' hello big world ' |
|||
'hello small world' copyReplaceString:'big' withString:'bigger' |
|||
=> ' hello small world ' |
|||
=== Concatenation === |
|||
===== , (comma) ===== |
|||
''string1'' , ''string2'' |
|||
''string1'' + ''string2'' [JS] |
|||
Example: |
|||
'hello', ' ' , 'world' |
|||
=> 'hello world' |
|||
=== Splitting === |
|||
===== splitBy: ===== |
|||
Splits a string into pieces, given a splitter. |
|||
The splitter may be a single character, a string or a block, which returns true to split. |
|||
''aString'' splitBy: ''aCharacter'' |
|||
''string1'' splitBy: ''string2'' |
|||
''aString'' splitBy: [ :char | ''<condition-expression on char>'' ] |
|||
''aString''.splitBy(''aCharacter'') [JS] |
|||
''string1''.splitBy(''string2'') [JS] |
|||
''aString''.splitBy( (char) => ''<condition-expression on char>'' ) [JS] |
|||
Example: |
|||
'hello world here are six words' splitBy: $ <- trailing space here |
|||
=> #( 'hello' 'world' 'here' 'are' 'six' 'words') |
|||
'hello-world here are six-words' splitBy: $- |
|||
=> #( 'hello' 'world here are six' 'words') |
|||
'hello world and goodbye world' splitBy: ' and ' |
|||
=> #( 'hello world' 'goodbye world') |
|||
'hello-world, commas and semis; here' splitBy: [:ch | (ch == $,) or:[ ch == $; ]] |
|||
=> #( 'hello-world' 'çommas and semis' 'here') |
|||
"hello world here are six words".splitBy( $' ' ) <- space character here |
|||
=> [ "hello" , "world" , "here" , "are" , "six" , "words" ] |
|||
"hello world and goodbye world".splitBy(" and ") |
|||
=> [ "hello world" , "goodbye world"] |
|||
"hello-world, commas and semis; here".splitBy( (ch) => (ch == $',') || ( ch == $';') ) |
|||
=> [ "hello-world" , "çommas and semis" , "here"] |
Aktuelle Version vom 5. Juni 2025, 09:14 Uhr
This document lists most useful (and most often needed) classes and functions. Be aware, that there are many more to be found in either the class references or via the builtin class browser.
Inhaltsverzeichnis
String[Bearbeiten]
Strings are sequences of characters. Expecco uses and supports the Unicode encoding standard and supports the whole unicode range.
However, not all fonts will contain all characters, resulting in some missing characters being drawn with a replacement char (typically a box-like rectangle) in text windows.
The concrete details depend on the operating system and the set of installed fonts.
String instances inherit a lot of functionality from String's superclasses: SequenceableCollection and Collection. Thus, all functions found there (enumeration, mapping, filtering, searching etc.) can also be applied to strings.
Read more: String API Functions
Reference: String
inherits from: CharacterArray and
SequenceableCollection and Collection
Collection[Bearbeiten]
Collection is an abstract class, serving as a superclass for a number of useful concrete classes (such as Set, Dictionary, Tree, SortedCollection, String etc.) It is useful to get a feeling of the set of operations provided there (there are a lot!), so you should not have to reinvent the wheel.
Read more: Collection API Functions
Reference: Collection
Filename[Bearbeiten]
Although strings could be used to represent file names and pathes, expecco uses instances of a specialized class called "Filename" to represent those. Filename instances know about any details of the underlying operating system (such as the directory separator, any naming restrictions etc.) and also provide a number of useful functions for file and directory access. Filename provides a portable representation, so that code can run on both Windows and Unix unchanged (that is: use "/" in filenames when possible. On a Windows machine, these will be replaced internally by "\" characters).
Read more: Filename API Functions
Reference: Filename
Stream[Bearbeiten]
Streams can be internal (eg. reading from a String) or external (eg. a file stream, pipe or socket). Streams can be used to read bytewiese, character wise (with optional UTF decoding/encoding) or object-wise. Most uses are with external streams, which are byte or character oriented: FileStream, PipeStream, Socket are examples.
Read more: Stream API Functions
Reference: Stream
Number[Bearbeiten]
Expecco supports a full numeric stack of numbers; both exact (integers and fractions) and inexact (IEEE floats in various precisions). Integer operations do not overflow or loose bits: expecco will automatically choose an appropriate representation to eg. be able to represent huge numbers.
Read more: Number API Functions
Reference: Number and its subclasses
Integer,
Float,
Fraction,
ScaledDecimal,
Complex
Date & Time[Bearbeiten]
Expecco provides a number of time related support classes: TimeDuration, Time, Date and Timestamp (aka. TimeAndDate) for local, UTC and timezone specific. Although timestamps support picosecond precision, current operating systems will only provide milli or microsecond resolution timestamps. However finer resolution values may come from exact measurement devices or be computed in technical/physical processes.
Read more: Date and Time API Functions
Reference: Date, Time, Timestamp, UtcTimestamp, TZTimestamp, TimeDuration.
Physical Values[Bearbeiten]
Since 20.1, expecco supports an additional framework to represent physical values, such as mass (in kg), length (in meters), velocity, acceleration, voltage, electric current etc.
Beside being able to do arithmetic as in 3.0 kiloMeter / 20 minutes
(which gives "2.5 m/s") they can also be used for conversion between metric and imperial unit systems (eg. "10 nauticalMiles asMeters
" gives the answer "18520 m" and "15 inches asMilliMeters
" returns "381 mm").
Read more: PhysicalValues
Cryptography[Bearbeiten]
Algorithms for hashing, encryption and decryption, certificate handling etc.
Read more: Cryptographic API Functions