OSL.js is a compiler and runtime for the Origin Scripting Language (OSL)
-
Clone the repository:
git clone https://github.com/Mistium/OSL.js.git cd OSL.js -
Install the CLI globally:
./install.sh
Or manually:
npm install -g .
Once installed, you can use the osl command:
# Compile an OSL file to JavaScript
osl compile script.osl
# Run an OSL file directly
osl run script.osl
# Open Origin website
osl origin
# Update OSL.js from GitHub
osl update
# Show help
osl help| Command | Description | Example |
|---|---|---|
compile <file> |
Compile OSL file to JavaScript | osl compile script.osl |
run <file> |
Compile and run OSL file | osl run script.osl |
origin |
Open Origin website | osl origin |
update |
Update from GitHub | osl update |
version |
Show version info | osl version |
help |
Show help message | osl help |
message = "Hello, World!"
number = 42
result = number + 10
log message
log result
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort() // Auto-assigns sorted array back to numbers
log numbers // [1, 1, 3, 4, 5, 9]
numbers.deDupe() // Remove duplicates
log numbers // [1, 3, 4, 5, 9]
text = "Hello World"
reversed = text.reverse()
log reversed // "dlroW olleH"
text.toUpper() // Auto-assigns uppercase version
log text // "HELLO WORLD"
x = 16
log x.sqrt() // 4
log x.isPrime() // false
angle = 90
log angle.radSin() // Math.sin(90)
x = 5
if x > 10 (
log "Greater than 10"
) else if x > 0 (
log "Positive number"
) else (
log "Zero or negative"
)
i = 0
while i < 5 (
log "Count: " ++ i
i += 1
)
loop 3 (
log "This runs 3 times"
)
chr()- Convert number to characterask()- Show prompt dialogreverse()- Reverse stringtoUpper()/toLower()- Change casesplit(delimiter)- Split into arrayleft(n)/right(n)- Get substringfirst()/last()- Get first/last characterstrip()- Remove whitespacepadStart(char, length)/padEnd(char, length)- Pad string
sort()- Sort arrayreverse()- Reverse arraydeDupe()- Remove duplicatesfill(value)- Fill with valuejoin(separator)- Join to stringpop()/shift()- Remove elementsfirst()/last()- Get first/last element
sqrt()- Square rootround()/floor()/ceiling()- Roundingabs()- Absolute valueisPrime()- Check if primeasin()/acos()/atan()- Trigonometric functionslog()/ln()- Logarithms
OSL.js/
├── bin/
│ └── osl.mjs # CLI script
├── modules/
│ └── compiler.mjs # Main compiler
├── external/
│ └── ASTgen.js # AST generator
├── package.json # Package configuration
├── install.sh # Installation script
└── README.md # This file
import { compiler } from './modules/compiler.mjs';
// Compile to JavaScript string
const jsCode = new compiler({
output: 'string',
code: 'log "Hello, World!"'
}).out;
// Compile to executable function
const fn = new compiler({
output: 'function',
code: 'log "Hello, World!"'
});
fn(); // Executes the OSL codeCheck out example.osl for a comprehensive example showcasing various OSL features.
- 📁 GitHub Repository: https://github.com/originOSL/OSL.js
- 📖 Documentation: https://osl.mistium.com
MIT License - see the repository for details.