diff --git a/libs/microbit/core.cpp b/libs/microbit/core.cpp index daccdd7d..e9ec6f82 100644 --- a/libs/microbit/core.cpp +++ b/libs/microbit/core.cpp @@ -42,6 +42,18 @@ namespace String_ { { return ManagedString::EmptyString.leakData(); } + + //% + StringData *substr(StringData *s, int start, int length) + { + if (length <= 0) + return mkEmpty(); + if (start < 0) + start = max(s->len + start, 0); + length = min(length, s->len - start); + ManagedString x(s); + return x.substring(start, length).leakData(); + } } diff --git a/libs/microbit/core.d.ts b/libs/microbit/core.d.ts deleted file mode 100644 index 0f7f7f96..00000000 --- a/libs/microbit/core.d.ts +++ /dev/null @@ -1,181 +0,0 @@ -/// - -interface Array { - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - //% shim=Array_::length - length: number; - - /** - * Appends new elements to an array. - * @param items New elements of the Array. - */ - //% shim=Array_::push - push(item: T): void; - - /** - * Removes the last element from an array and returns it. - */ - //% helper=arrayPop - pop(): T; - - /** - * Reverses the elements in an Array. - */ - //% helper=arrayReverse - reverse(): void; - - /** - * Removes the first element from an array and returns it. - */ - //% helper=arrayShift - shift(): T; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - //% helper=arraySlice - slice(start: number, end: number): T[]; - - /** Removes the first occurence of an object. Returns true if removed. */ - //% shim=Array_::removeElement - removeElement(element:T) : boolean; - - /** Removes the object at position index. */ - //% shim=Array_::removeAt - removeAt(idx:number) : void; - - - /** - * Removes elements from an array. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - */ - //% helper=arraySplice - splice(start: number, deleteCount: number): void; - - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - //% helper=arrayUnshift - unshift(item:T): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - //% shim=Array_::indexOf - indexOf(searchElement: T, fromIndex?: number): number; - - - [n: number]: T; -} - -declare interface String { - /** - * Returns the character at the specified index. - * @param pos The zero-based index of the desired character. - */ - //% shim=String_::charAt - charAt(pos: number): string; - - /** - * Returns the Unicode value of the character at the specified location. - * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. - */ - //% shim=String_::charCodeAt - charCodeAt(index: number): number; - - /** - * Returns a string that contains the concatenation of two or more strings. - * @param other The string to append to the end of the string. - */ - //% shim=String_::concat - concat(other: string): string; - - /** - * Determines whether relative order of two strings (in ASCII encoding). - * @param that String to compare to target string - */ - //% shim=String_::compare - compare(that: string): number; - - /** Returns the length of a String object. */ - //% property shim=String_::length - length: number; - - [index: number]: string; -} - - - -/** - * Converts A string to an integer. - * @param s A string to convert into a number. - */ -//% shim=String_::toNumber -declare function parseInt(s: string): number; - -interface Object {} -interface Function {} -interface IArguments {} -interface RegExp {} - - -declare interface Boolean { - /** - * Returns a string representation of an object. - */ - //% shim=Boolean_::toString - toString(): string; -} - -declare namespace String { - - /** - * Make a string from the given ASCII character code. - */ - //% shim=String_::fromCharCode - function fromCharCode(code: number): string; -} - - -declare interface Number { - /** - * Returns a string representation of a number. - */ - //% shim=Number_::toString - toString(): string; -} - -/** - * Numbers and arithmetic operators - */ -declare namespace Math { - - /** - * Returns the value of a base expression taken to a specified power. - * @param x The base value of the expression. - * @param y The exponent value of the expression. - */ - //% shim=Math_::pow - function pow(x: number, y: number): number; - - /** - * Returns a pseudorandom number between 0 and `max`. - */ - //% shim=Math_::random - function random(max: number): number; - - /** - * Returns the square root of a number. - * @param x A numeric expression. - */ - //% shim=Math_::sqrt - function sqrt(x: number): number; -} diff --git a/libs/microbit/music.ts b/libs/microbit/music.ts index 3bf0bfd2..1a7197e9 100644 --- a/libs/microbit/music.ts +++ b/libs/microbit/music.ts @@ -134,8 +134,9 @@ namespace music { */ //% help=music/beat weight=49 //% blockId=device_beat block="%fraction|beat" - export function beat(fraction : BeatFraction = BeatFraction.Whole): number { + export function beat(fraction?: BeatFraction): number { init(); + if (fraction == null) fraction = BeatFraction.Whole; let beat = 60000 / beatsPerMinute; if (fraction == BeatFraction.Whole) return beat; else if (fraction == BeatFraction.Half) return beat / 2; diff --git a/package.json b/package.json index e2fdb4c1..524a1bfc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.60", + "version": "0.2.61", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.62" + "pxt-core": "0.2.64" } }