Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
whoisjeeva committed Feb 19, 2022
0 parents commit 5ea117c
Show file tree
Hide file tree
Showing 56 changed files with 1,263 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 49 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<h1 align="center">GhostJS - To Evaluate JavaScript in Android</h1>

<p align="center">
<a href="https://jitpack.io/#gumify/ghostjs"><img src="https://img.shields.io/jitpack/v/github/gumify/ghostjs?style=for-the-badge" alt="Release"></a>
<a href="https://travis-ci.com/gumify/ghostjs"><img src="https://img.shields.io/travis/com/gumify/ghostjs/master?style=for-the-badge" alt="Build Status"></a>
<a href="https://github.com/gumify/ghostjs/blob/master/LICENSE.txt"><img src="https://img.shields.io/github/license/gumify/ghostjs.svg?style=for-the-badge" alt="License"></a>
<!-- <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/gumify/ghostjs?logo=GitHub&style=for-the-badge"> -->
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/gumify/ghostjs?logo=GitHub&style=for-the-badge">
<a href="https://github.com/gumify/ghostjs/issues"><img alt="GitHub open issues" src="https://img.shields.io/github/issues/gumify/ghostjs?style=for-the-badge"></a>
</p>

### Getting Started

Add it in your root build.gradle at the end of repositories

```gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```

Add the dependency

```gradle
implementation "com.github.gumify:ghostjs:$ghost_version"
```

Create an icecream instance

```kotlin
val ghostjs = Ghostjs()
```

### Usage

```kotlin
ghostjs.executeFile("test.js")
scope.launch {
val output: String? = ghostjs.eval("""return dio;""")
Log.d("Ghostjs", output.toString())
}
```

```kotlin
ghostjs.loadUrl("https://www.google.com")
```
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
63 changes: 63 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}

android {
compileSdk 32

defaultConfig {
applicationId "sh.fearless.ghostjsexample"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion compose_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}

dependencies {

implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'
implementation 'androidx.activity:activity-compose:1.4.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

implementation project(":ghostjs")
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package me.gumify.ghostjsexample

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4

import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*

/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("sh.fearless.ghostjsexample", appContext.packageName)
}
}
27 changes: 27 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.gumify.ghostjsexample">

<uses-permission android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GhostjsExample">
<activity
android:name="me.gumify.ghostjsexample.MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.GhostjsExample">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
9 changes: 9 additions & 0 deletions app/src/main/assets/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<title>Hi</title>
</head>
<body>
<script src="./test.js"></script>
</body>
</html>
1 change: 1 addition & 0 deletions app/src/main/assets/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
var dio = "coursedio";
68 changes: 68 additions & 0 deletions app/src/main/java/me/gumify/ghostjsexample/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package me.gumify.ghostjsexample

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import kotlinx.coroutines.launch
import me.gumify.ghostjs.Ghostjs
import me.gumify.ghostjsexample.ui.theme.GhostjsExampleTheme

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
GhostjsExampleTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Greeting("Android")
}
}
}
}
}

@Composable
fun Greeting(name: String) {
val context = LocalContext.current
val ghostjs = remember { Ghostjs(context) }
val scope = rememberCoroutineScope()

Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
Button(
onClick = {
ghostjs.executeFile("test.js")
scope.launch {
val output: String? = ghostjs.eval("""return dio;""")
Log.d("Ghostjs", output.toString())
}
}
) {
Text(text = "Go!")
}
}
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
GhostjsExampleTheme {
Greeting("Android")
}
}
8 changes: 8 additions & 0 deletions app/src/main/java/me/gumify/ghostjsexample/ui/theme/Color.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package me.gumify.ghostjsexample.ui.theme

import androidx.compose.ui.graphics.Color

val Purple200 = Color(0xFFBB86FC)
val Purple500 = Color(0xFF6200EE)
val Purple700 = Color(0xFF3700B3)
val Teal200 = Color(0xFF03DAC5)
11 changes: 11 additions & 0 deletions app/src/main/java/me/gumify/ghostjsexample/ui/theme/Shape.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package me.gumify.ghostjsexample.ui.theme

import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Shapes
import androidx.compose.ui.unit.dp

val Shapes = Shapes(
small = RoundedCornerShape(4.dp),
medium = RoundedCornerShape(4.dp),
large = RoundedCornerShape(0.dp)
)
Loading

0 comments on commit 5ea117c

Please sign in to comment.