• Stars
    star
    540
  • Rank 82,257 (Top 2 %)
  • Language
    Objective-C
  • License
    Eclipse Public Li...
  • Created almost 10 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ClojureScript REPL into embedded JavaScriptCore

Ambly

A ClojureScript REPL into embedded JavaScriptCore on iOS, macOS, and tvOS.

Ambly is a REPL designed for use when developing hybrid ClojureScript / native apps.

Ambly comprises a ClojureScript REPL implementation, along with Objective-C code interfacing JavaScriptCore.

An iOS, macOS and tvOS demo apps are included, making it easy to give the REPL a spin.

pod "Ambly", "~> 1.11.0"

Clojars Project

Running

Prerequisites

You must have Xcode installed as well as support for CocoaPods. You must have Java 8 or later installed along with the Clojure CLI tools.

Demo iOS and tvOS Apps

In ambly/ObjectiveC/Ambly Demo run pod install.

Open Ambly Demo.xcworkspace in Xcode and run the app in the simulator or on a device.

You'll need to choose a team in the 'Ambly Demo' target settings (and set the Bundle Identifier to something compatible with your team).

Demo macOS App

You can either build the Ambly Demo CLI project and install it, or download a prebuilt macOS binary from http://ambly.fikesfarm.com

REPL

You can start the Ambly REPL by supplying -re ambly as an option to cljs.main.

Here is a sample REPL startup sequence, illustrating device auto-discovery:

$ clj -m cljs.main -ro '{:choose-first-discovered false}' -re ambly -r

Ambly binding to 10.0.1.41 for mDNS.

[1] Ambly Demo on iPod touch
[2] Ambly Demo on iPad
[3] Ambly Demo on iPhone Simulator (My-Mac-Pro)
[4] Ambly Demo TV on Apple TV

[R] Refresh

Choice: 1

Connecting to Ambly Demo on iPod touch ...

To quit, type: :cljs/quit
cljs.user=> (+ 3 4)
7

Note: See Connectivity for details, should any networking difficulty arise.

REPL Options

:choose-first-discovered

Determines whether the Ambly will attempt to automatically connect the first device discovered. Defaults to true.

Example:

clj -m cljs.main -ro '{:choose-first-discovered false}' -re ambly -r

:mdns-bind-address

Specifies the address that Ambly binds to when using multicast DNS to search for devices.

clj -m cljs.main -ro '{:mdns-bind-address "10.0.0.1"}' -re ambly -r

App Integration

See Integrating Ambly into Your App for details.

An example using Ambly to drive Ejecta is at ClojureScript Ejecta.

Source for an example iOS app that makes use of Ambly is Shrimp.

License

Ambly™ Copyright © 2015–2022 Mike Fikes and Contributors

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

More Repositories

1

goby

Develop iOS apps with ClojureScript
Objective-C
345
star
2

cljs-bean

Efficient JavaScript object interop via idiomatic ClojureScript
Clojure
305
star
3

esprit

ClojureScript on the ESP32 using Espruino
Clojure
138
star
4

tubular

Clojure Socket REPL client
Clojure
85
star
5

bocko

Simple Clojure imperative graphics
Clojure
75
star
6

reagent-react-native

Demo project for Reagent with React Native
Objective-C
59
star
7

advent-of-code

Advent of Code in Clojure, ClojureScript, HP BASIC, Objective-C
Objective-C
57
star
8

shrimp

Example project using Goby
Objective-C
51
star
9

coal-mine

Clojure(Script) compiler characterization tests corpus
Clojure
38
star
10

esprit-board

37
star
11

react-native-externs

Google Closure extern files for React Native
JavaScript
34
star
12

tach

Test self-hosted ClojureScript libs with lein
Clojure
26
star
13

chivorcam

Macros directly in ClojureScript
Clojure
23
star
14

ilk

Type tools for ClojureScript
Clojure
18
star
15

indole

A rate limiting algorithm for Clojure(Script)
Clojure
16
star
16

auto-completion

ClojureScript React Native Om Next Auto-Completion
Objective-C
15
star
17

mt-cljs

Multithreaded ClojureScript
Clojure
14
star
18

titrate

Test with bootstrap ClojureScript
Clojure
12
star
19

elbow

Use Replumb in Node
Clojure
12
star
20

cljs-perf

ClojureScript compiler perf measurements
11
star
21

self-host-etl-pipeline

Self-host ETL Pipeline
Clojure
11
star
22

precise

Tagged literals for exact
Clojure
9
star
23

bocko-ios

Render Bocko onto iOS with ClojureScript
Objective-C
8
star
24

fifth-postulate

Test ClojureScript parallel compilation speedup
Clojure
8
star
25

om-react-ios-components

Using 3rd party React iOS components with Om
Objective-C
7
star
26

cljs-cl

Experiment with ClojureScript command-line app (compiled to Java byte code)
Clojure
7
star
27

derevo

Builds ClojureScript :foreign-libs graph from JS files
Clojure
6
star
28

ambient

Example of using ambient functions from self-hosted ClojureScript
Clojure
6
star
29

patch-tender

Check and test with ClojureScript patches
Clojure
6
star
30

morse-key-ble-bridge

Connect Morse key as a Bluetooth keyboard
C
5
star
31

bentho

Support utilities for React Native
Objective-C
4
star
32

sucnm

Structure and Use of ClojureScript Namespaces with Macros
Clojure
3
star
33

closurecomp

Checks that ClosureScript works fine with latest Closure Compiler and Library
3
star
34

hp-85-utils

Utilities for working with the HP-85
BASIC
2
star
35

clik-clak-joe

React Native tic-tac-toe in ClojureScript
Clojure
2
star
36

impedance-converter

Impedance Converter
Swift
2
star
37

nash-this

Illustrates a collision problem in Nashorn related to this.state=state in ctors
Clojure
1
star
38

arb

Arbitrary waveform file generation utilities
Clojure
1
star
39

battery-models

1
star
40

word-clouds

Sorted word frequencies for word clouds
Clojure
1
star
41

battery-discharge

Keithley Battery Discharge Sample App port for the Keithley 2400 SourceMeter
Python
1
star
42

pwl-utilities

Utilities for working with LTspice PWL files
Python
1
star
43

rn-commonjs

Test React Native commonjs processing
Clojure
1
star
44

test-commonjs

Testing ClojureScript CommonJS support
Clojure
1
star
45

signalsonic

SignalSonic Morse Code Safari Extension
JavaScript
1
star
46

workarounds-1.10.439

Monkey patches to workaround CLJS-2955
Clojure
1
star
47

aardvark-qwiic-adapter

Adapter from Total Phase Aardvark 10-pin connector to QWIIC pins, along with GPIO breakout
1
star