mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Мелкие правки
This commit is contained in:
parent
36ea7b25b5
commit
fed61592ba
190
docs/modules.yml
190
docs/modules.yml
@ -12,7 +12,7 @@
|
|||||||
- name: OwnLang
|
- name: OwnLang
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{PLATFORM=android/desktop, VERSION=1.4.0_000000, VERSION_MAJOR=1, VERSION_MINOR=4, VERSION_PATCH=0}"
|
value: "{PLATFORM=android/desktop, VERSION=1.5.0_000000, VERSION_MAJOR=1, VERSION_MINOR=5, VERSION_PATCH=0}"
|
||||||
since: 1.4.0
|
since: 1.4.0
|
||||||
functions:
|
functions:
|
||||||
- name: arrayCombine
|
- name: arrayCombine
|
||||||
@ -187,6 +187,7 @@
|
|||||||
args: input, charset = "UTF-8"
|
args: input, charset = "UTF-8"
|
||||||
desc: returns a string from byte array in the given charset
|
desc: returns a string from byte array in the given charset
|
||||||
desc_ru: возвращает строку из массива байт в заданной кодировке
|
desc_ru: возвращает строку из массива байт в заданной кодировке
|
||||||
|
since: 1.5.0
|
||||||
- name: stripMargin
|
- name: stripMargin
|
||||||
args: input, marginPrefix = "|"
|
args: input, marginPrefix = "|"
|
||||||
desc: trims leading whitespaces followed by `marginPrefix` on each line and removes the first and the last lines if they are blank
|
desc: trims leading whitespaces followed by `marginPrefix` on each line and removes the first and the last lines if they are blank
|
||||||
@ -1304,7 +1305,7 @@
|
|||||||
|
|
||||||
downloader(url, file, def(progress, bytesDownloaded, bytesMax) {
|
downloader(url, file, def(progress, bytesDownloaded, bytesMax) {
|
||||||
bar = "#" * (progress / 2)
|
bar = "#" * (progress / 2)
|
||||||
print sprintf("%-50s %d%% %.2f / %.2f MiB\r", bar, progress, bytesDownloaded / MBYTES, bytesMax / MBYTES)
|
print sprintf("%-50s %d%% %.2f / %.2f MiB\\r", bar, progress, bytesDownloaded / MBYTES, bytesMax / MBYTES)
|
||||||
})
|
})
|
||||||
- name: base64
|
- name: base64
|
||||||
scope: both
|
scope: both
|
||||||
@ -1346,7 +1347,7 @@
|
|||||||
print jsondecode("{\"key1\":1,\"key2\":[1,2,3],\"key3\":\"text\"}") // {key2=[1, 2, 3], key3=text, key1=1}
|
print jsondecode("{\"key1\":1,\"key2\":[1,2,3],\"key3\":\"text\"}") // {key2=[1, 2, 3], key3=text, key1=1}
|
||||||
-
|
-
|
||||||
name: "jsonencode"
|
name: "jsonencode"
|
||||||
args: "jsonString"
|
args: "jsonString, indent = 0"
|
||||||
desc: "converts string to data"
|
desc: "converts string to data"
|
||||||
desc_ru: "преобразует строку в формате json в данные"
|
desc_ru: "преобразует строку в формате json в данные"
|
||||||
example: |-
|
example: |-
|
||||||
@ -1651,6 +1652,7 @@
|
|||||||
- `custom(func)` - performs custom operation
|
- `custom(func)` - performs custom operation
|
||||||
- `reduce(func)` - converts elements to one value
|
- `reduce(func)` - converts elements to one value
|
||||||
- `forEach(func)` - executes function for each element
|
- `forEach(func)` - executes function for each element
|
||||||
|
- `joining(delimiter = "", prefix = "", suffix = "")` - joins elements into a string
|
||||||
- `toArray()` - returns array of elements
|
- `toArray()` - returns array of elements
|
||||||
- `count()` - returns count of elements
|
- `count()` - returns count of elements
|
||||||
desc_ru: |-
|
desc_ru: |-
|
||||||
@ -1670,6 +1672,7 @@
|
|||||||
- `custom(func)` - выполняет пользовательскую операцию над данными
|
- `custom(func)` - выполняет пользовательскую операцию над данными
|
||||||
- `reduce(func)` - преобразует элементы в одно значение
|
- `reduce(func)` - преобразует элементы в одно значение
|
||||||
- `forEach(func)` - вызывает функцию для каждого элемента
|
- `forEach(func)` - вызывает функцию для каждого элемента
|
||||||
|
- `joining(delimiter = "", prefix = "", suffix = "")` - склеивает элементы в строку
|
||||||
- `toArray()` - возвращает массив элементов
|
- `toArray()` - возвращает массив элементов
|
||||||
- `count()` - возвращает количество элементов
|
- `count()` - возвращает количество элементов
|
||||||
- name: takewhile
|
- name: takewhile
|
||||||
@ -2604,8 +2607,23 @@
|
|||||||
args: 'layoutManager = ...'
|
args: 'layoutManager = ...'
|
||||||
desc: 'creates new panel with optional layout manager'
|
desc: 'creates new panel with optional layout manager'
|
||||||
desc_ru: 'создаёт новую панель с опциональным LayoutManager'
|
desc_ru: 'создаёт новую панель с опциональным LayoutManager'
|
||||||
- name: newTextField
|
- name: newProgressBar
|
||||||
|
args: 'isVertical = false, min = 0, max = 100'
|
||||||
|
desc: 'creates new progress bar'
|
||||||
|
desc_ru: 'создаёт новый прогрессбар'
|
||||||
|
since: 1.5.0
|
||||||
|
- name: newScrollPane
|
||||||
|
args: 'view, verticalPolicy = AS_NEEDED, horizontalPolicy = AS_NEEDED'
|
||||||
|
desc: 'creates new scroll pane'
|
||||||
|
desc_ru: 'создаёт новую область прокрутки'
|
||||||
|
since: 1.5.0
|
||||||
|
- name: newTextArea
|
||||||
args: 'text = ""'
|
args: 'text = ""'
|
||||||
|
desc: 'creates new text area'
|
||||||
|
desc_ru: 'создаёт новую область ввода'
|
||||||
|
since: 1.5.0
|
||||||
|
- name: newTextField
|
||||||
|
args: 'text = "", rows = 0, cols = 0'
|
||||||
desc: 'creates new text field'
|
desc: 'creates new text field'
|
||||||
desc_ru: 'создаёт новое поле ввода'
|
desc_ru: 'создаёт новое поле ввода'
|
||||||
- name: newWindow
|
- name: newWindow
|
||||||
@ -3777,46 +3795,43 @@
|
|||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{TRIANGLES=0, TRIANGLE_STRIP=1, TRIANGLE_FAN=2}"
|
value: "{TRIANGLES=0, TRIANGLE_STRIP=1, TRIANGLE_FAN=2}"
|
||||||
-
|
- name: "Action"
|
||||||
name: "Action"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{DOWN=0, UP=1, MOVE=2, MULTIPLE=2, CANCEL=3, OUTSIDE=4, POINTER_DOWN=5, POINTER_UP=6, POINTER_INDEX_SHIFT=8, MASK=255, POINTER_INDEX_MASK=65280}"
|
value: "{DOWN=0, UP=1, MOVE=2, MULTIPLE=2, CANCEL=3, OUTSIDE=4, POINTER_DOWN=5, POINTER_UP=6, POINTER_INDEX_SHIFT=8, MASK=255, POINTER_INDEX_MASK=65280}"
|
||||||
-
|
- name: "BitmapCompressFormat"
|
||||||
name: "BitmapCompressFormat"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{JPEG=0, PNG=1, WEBP=2}"
|
value: "{JPEG=0, PNG=1, WEBP=2}"
|
||||||
-
|
- name: "EdgeType"
|
||||||
name: "EdgeType"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{BW=0, AA=1}"
|
value: "{BW=0, AA=1}"
|
||||||
-
|
- name: "Cap"
|
||||||
name: "Cap"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{BUTT=0, ROUND=1, SQUARE=2}"
|
value: "{BUTT=0, ROUND=1, SQUARE=2}"
|
||||||
-
|
- name: "Style"
|
||||||
name: "Style"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{FILL=0, STROKE=1, FILL_AND_STROKE=2}"
|
value: "{FILL=0, STROKE=1, FILL_AND_STROKE=2}"
|
||||||
-
|
- name: "BitmapConfig"
|
||||||
name: "BitmapConfig"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{ALPHA_8=0, RGB_565=1, ARGB_4444=2, ARGB_8888=3}"
|
value: "{ALPHA_8=0, RGB_565=1, ARGB_4444=2, ARGB_8888=3}"
|
||||||
-
|
- name: "Join"
|
||||||
name: "Join"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{MITER=0, ROUND=1, BEVEL=2}"
|
value: "{MITER=0, ROUND=1, BEVEL=2}"
|
||||||
-
|
- name: "Align"
|
||||||
name: "Align"
|
|
||||||
typeName: map
|
typeName: map
|
||||||
type: 4
|
type: 4
|
||||||
value: "{LEFT=0, CENTER=1, RIGHT=2}"
|
value: "{LEFT=0, CENTER=1, RIGHT=2}"
|
||||||
|
- name: "DisplayMetrics"
|
||||||
|
typeName: map
|
||||||
|
type: 4
|
||||||
|
value: "{density=, densityDpi=, scaledDensity=, widthPixels=, heightPixels=, xdpi=, ydpi=}"
|
||||||
|
since: 1.5.1
|
||||||
functions:
|
functions:
|
||||||
- name: "createBitmap"
|
- name: "createBitmap"
|
||||||
args: "..."
|
args: "..."
|
||||||
@ -3865,48 +3880,74 @@
|
|||||||
bitmap = createBitmap(imageBytes)
|
bitmap = createBitmap(imageBytes)
|
||||||
g.drawBitmap(bitmap, 0, 0)
|
g.drawBitmap(bitmap, 0, 0)
|
||||||
repaint()
|
repaint()
|
||||||
-
|
- name: "createScaledBitmap"
|
||||||
name: "createScaledBitmap"
|
|
||||||
args: "srcBitmap, width, height, filter"
|
args: "srcBitmap, width, height, filter"
|
||||||
desc: "scales bitmap to size and returns new BitmapValue"
|
desc: "scales bitmap to size and returns new BitmapValue"
|
||||||
desc_ru: "возвращает BitmapValue с изменённым размером заданного изображения"
|
desc_ru: "возвращает BitmapValue с изменённым размером заданного изображения"
|
||||||
-
|
- name: "getScreenBitmap"
|
||||||
name: "getScreenBitmap"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: "returns current screen as bitmap"
|
desc: "returns current screen as bitmap"
|
||||||
desc_ru: "возвращает содержимое экрана в виде изображения"
|
desc_ru: "возвращает содержимое экрана в виде изображения"
|
||||||
-
|
- name: "hidecanvas"
|
||||||
name: "hidecanvas"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: "closes canvas screen and releases resources"
|
desc: "closes canvas screen and releases resources"
|
||||||
desc_ru: "закрывает экран канваса и освобождает ресурсы"
|
desc_ru: "закрывает экран канваса и освобождает ресурсы"
|
||||||
-
|
- name: "newPath"
|
||||||
name: "repaint"
|
args: "path = null"
|
||||||
|
desc: "creates new PathValue"
|
||||||
|
desc_ru: "создаёт новый PathValue"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "newLinearGradient"
|
||||||
|
args: "x0, y0, x1, y1, colors|color1, positions|color2, tileMode"
|
||||||
|
desc: "creates new shader"
|
||||||
|
desc_ru: "создаёт новый шейдер"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "newRadialGradient"
|
||||||
|
args: "cx, cy, radius, colors|color1, positions|color2, tileMode"
|
||||||
|
desc: "creates new shader"
|
||||||
|
desc_ru: "создаёт новый шейдер"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "newSweepGradient"
|
||||||
|
args: "cx, cy, colors|color1, positions|color2"
|
||||||
|
desc: "creates new shader"
|
||||||
|
desc_ru: "создаёт новый шейдер"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "newBitmapShader"
|
||||||
|
args: "bitmap, modeX, modeY"
|
||||||
|
desc: "creates new bitmap shader"
|
||||||
|
desc_ru: "создаёт новый шейдер из картинки"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "newComposeShader"
|
||||||
|
args: "shader1, shader2, mode = SRC_OVER"
|
||||||
|
desc: "creates new composition shader"
|
||||||
|
desc_ru: "создаёт новый композитный шейдер"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "repaint"
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setOnKeyDownEvent"
|
||||||
name: "setOnKeyDownEvent"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setOnKeyUpEvent"
|
||||||
name: "setOnKeyUpEvent"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setOnLongPressEvent"
|
||||||
name: "setOnLongPressEvent"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setOnTouchEvent"
|
||||||
name: "setOnTouchEvent"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setGestureDetectorListener"
|
||||||
name: "showcanvas"
|
args: "listener"
|
||||||
|
desc: "sets gesture detector listener"
|
||||||
|
desc_ru: "устанавливает обработчик детектора жестов"
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "showcanvas"
|
||||||
args: ""
|
args: ""
|
||||||
desc: "shows canvas screen and returns GraphicsValue"
|
desc: "shows canvas screen and returns GraphicsValue"
|
||||||
desc_ru: "показывает экран канваса и возвращает GraphicsValue"
|
desc_ru: "показывает экран канваса и возвращает GraphicsValue"
|
||||||
@ -4054,9 +4095,13 @@
|
|||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "clipPath"
|
||||||
name: "clipRect"
|
args: "path"
|
||||||
args: ""
|
desc: ""
|
||||||
|
desc_ru: ""
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "clipRect"
|
||||||
|
args: "x, y, w, h, op = 0"
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
-
|
||||||
@ -4099,13 +4144,16 @@
|
|||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "drawPath"
|
||||||
name: "drawPoint"
|
args: "path"
|
||||||
|
desc: ""
|
||||||
|
desc_ru: ""
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "drawPoint"
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "drawRGB"
|
||||||
name: "drawRGB"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
@ -4119,13 +4167,16 @@
|
|||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "drawText"
|
||||||
name: "drawText"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "drawTextOnPath"
|
||||||
name: "fillCircle"
|
args: "text, path, hOffset, vOffset"
|
||||||
|
desc: ""
|
||||||
|
desc_ru: ""
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "fillCircle"
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
@ -4154,13 +4205,16 @@
|
|||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "getColor"
|
||||||
name: "getColor"
|
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "getFillPath"
|
||||||
name: "getDensity"
|
args: "src, dst"
|
||||||
|
desc: ""
|
||||||
|
desc_ru: ""
|
||||||
|
since: 1.5.1
|
||||||
|
- name: "getDensity"
|
||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
@ -4394,29 +4448,29 @@
|
|||||||
args: ""
|
args: ""
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setShader"
|
||||||
name: "setShadowLayer"
|
args: "shader"
|
||||||
args: ""
|
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
since: 1.5.1
|
||||||
name: "setStrikeThruText"
|
- name: "setShadowLayer"
|
||||||
args: ""
|
args: "radius, dx, dy, shadowColor"
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setStrikeThruText"
|
||||||
name: "setStrokeCap"
|
args: "isEnabled"
|
||||||
args: ""
|
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setStrokeCap"
|
||||||
name: "setStrokeJoin"
|
args: "cap"
|
||||||
args: ""
|
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
- name: "setStrokeJoin"
|
||||||
name: "setStrokeMiter"
|
args: "join"
|
||||||
args: ""
|
desc: ""
|
||||||
|
desc_ru: ""
|
||||||
|
- name: "setStrokeMiter"
|
||||||
|
args: "miter"
|
||||||
desc: ""
|
desc: ""
|
||||||
desc_ru: ""
|
desc_ru: ""
|
||||||
-
|
-
|
||||||
|
110
examples/versions/whatsnew_1.5.0.own
Normal file
110
examples/versions/whatsnew_1.5.0.own
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
use ["std", "functional", "gzip", "json", "java"]
|
||||||
|
|
||||||
|
title("Added std::getBytes, std::stringFromBytes")
|
||||||
|
arr = [119, 111, 114, 108, 100]
|
||||||
|
println getBytes("Hello")
|
||||||
|
println stringFromBytes(arr)
|
||||||
|
println getBytes("👍", "UTF-8")
|
||||||
|
|
||||||
|
|
||||||
|
title("Added std::stripMargin")
|
||||||
|
println "123
|
||||||
|
| 456
|
||||||
|
| 789".stripMargin("|")
|
||||||
|
println "
|
||||||
|
> 123
|
||||||
|
> 456
|
||||||
|
> 789
|
||||||
|
".stripMargin("> ")
|
||||||
|
|
||||||
|
|
||||||
|
title("Added functional::stream::joining")
|
||||||
|
println stream(range(1, 10))
|
||||||
|
.filter(def(x) = x % 2 == 0)
|
||||||
|
.joining(", ")
|
||||||
|
println stream(range(1, 4))
|
||||||
|
.joining(" | ", "<", ">")
|
||||||
|
|
||||||
|
|
||||||
|
title("Added properties and functions for arrays")
|
||||||
|
println arr.length
|
||||||
|
if (!arr.isEmpty()) {
|
||||||
|
println arr.joinToString("-")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
title("Added null coalesce operator")
|
||||||
|
obj = {"a": {"b": 12}}
|
||||||
|
println obj.b ?? 1
|
||||||
|
println obj.a.b ?? 2
|
||||||
|
println obj.test1.test2 ?? 3
|
||||||
|
|
||||||
|
|
||||||
|
title("Added basic classes support")
|
||||||
|
class Point {
|
||||||
|
def Point(x, y) {
|
||||||
|
this.x = x
|
||||||
|
this.y = y
|
||||||
|
}
|
||||||
|
def move(dx, dy) {
|
||||||
|
this.x += dx
|
||||||
|
this.y += dy
|
||||||
|
}
|
||||||
|
|
||||||
|
def info() = "[" + this.x + ", " + this.y + "]"
|
||||||
|
}
|
||||||
|
a = new Point(10, 12)
|
||||||
|
println a.info()
|
||||||
|
b = new Point(2, 4)
|
||||||
|
a.move(b.x, b.y)
|
||||||
|
println a.info()
|
||||||
|
|
||||||
|
|
||||||
|
title("Ability to iterate strings and arrays with index")
|
||||||
|
for ch : "test "
|
||||||
|
print ch
|
||||||
|
for ch, code : "test"
|
||||||
|
print "{" + ch + ", " + code + "} "
|
||||||
|
|
||||||
|
println ""
|
||||||
|
for el : arr
|
||||||
|
print " " + el
|
||||||
|
println ""
|
||||||
|
for el, index : arr
|
||||||
|
print "{" + el + ", " + index + "} "
|
||||||
|
|
||||||
|
|
||||||
|
title("Ability to pretty-print json")
|
||||||
|
data = {"xyz": 123, "uvw": 456, "rst": 789}
|
||||||
|
println jsonencode(data)
|
||||||
|
println jsonencode(data, 2)
|
||||||
|
|
||||||
|
|
||||||
|
title("Added gzip module")
|
||||||
|
text = "Lorem ipsum dolor sit amet" * 80
|
||||||
|
bytesOriginal = getBytes(text)
|
||||||
|
bytesGzipped = gzipBytes(bytesOriginal)
|
||||||
|
println "Original bytes count: " + bytesOriginal.length
|
||||||
|
println "Gzipped bytes count: " + bytesGzipped.length
|
||||||
|
println "Ungzip"
|
||||||
|
ungzippedBytes = ungzipBytes(bytesGzipped)
|
||||||
|
println stringFromBytes(ungzippedBytes) == text ? "match" : "not match"
|
||||||
|
|
||||||
|
|
||||||
|
title("Improved java interoperability")
|
||||||
|
Random = newClass("java.util.Random")
|
||||||
|
rnd = new Random()
|
||||||
|
println rnd.nextInt(100)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
title("Other")
|
||||||
|
println "Added zip, okhttp module"
|
||||||
|
|
||||||
|
// helpers
|
||||||
|
def title(s) {
|
||||||
|
println "\n"
|
||||||
|
println "=" * s.length
|
||||||
|
println s
|
||||||
|
println "=" * s.length
|
||||||
|
}
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
#Fri Mar 09 10:54:07 EET 2018
|
#Fri Mar 09 10:54:07 EET 2018
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@ -221,7 +221,7 @@ public class zip implements Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void generateFileList(Map<File, String> mappings, String rootPath, File node, Function mapper) {
|
private void generateFileList(Map<File, String> mappings, String rootPath, File node, Function mapper) {
|
||||||
if (!rootPath.equals(node.getAbsolutePath())) {
|
if (rootPath != null && !rootPath.equals(node.getAbsolutePath())) {
|
||||||
String entryPath = node.getAbsolutePath().substring(rootPath.length() + 1);
|
String entryPath = node.getAbsolutePath().substring(rootPath.length() + 1);
|
||||||
if (mapper != null) {
|
if (mapper != null) {
|
||||||
entryPath = mapper.execute(new StringValue(entryPath)).asString();
|
entryPath = mapper.execute(new StringValue(entryPath)).asString();
|
||||||
@ -233,12 +233,20 @@ public class zip implements Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (node.isDirectory()) {
|
if (node.isDirectory()) {
|
||||||
for (File file : node.listFiles()) {
|
for (File file : safeListFiles(node)) {
|
||||||
generateFileList(mappings, rootPath, file, mapper);
|
generateFileList(mappings, rootPath, file, mapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private File[] safeListFiles(File node) {
|
||||||
|
final File[] files = node.listFiles();
|
||||||
|
if (files != null) {
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
return new File[0];
|
||||||
|
}
|
||||||
|
|
||||||
private String[] listEntries(File input) {
|
private String[] listEntries(File input) {
|
||||||
final List<String> entries = new ArrayList<>();
|
final List<String> entries = new ArrayList<>();
|
||||||
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(input))) {
|
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(input))) {
|
||||||
|
Loading…
Reference in New Issue
Block a user