Skip to content

Commit

Permalink
Merge pull request #224 from ua-parser/minor-readme-changes
Browse files Browse the repository at this point in the history
Minor README changes
  • Loading branch information
thyandrecardoso authored Dec 6, 2023
2 parents 1382f0a + 0a1930d commit ad4bd31
Showing 1 changed file with 37 additions and 54 deletions.
91 changes: 37 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,71 +6,22 @@ uap-scala

A Scala user-agent string parser based on [ua-parser/uap-core](https://github.com/ua-parser/uap-core). It extracts browser, OS and device information.

### Checkout
The code for this repository can be checked out normally. It uses a [git submodule](https://git-scm.com/docs/git-submodule) to include the files needed from [uap-core](https://github.com/ua-parser/uap-core) so care must be taken to make sure the `core` directory is properly checked out and initialized.

Checking out the repo for the first time
```
git clone --recursive https://github.com/ua-parser/uap-scala.git
```
If uap-scala was checked out and core was not properly initialized, the following can be done

```
cd core
git submodule update --init --recursive
```

### Build
To build for the default Scala (currently 2.11):
```scala
sbt package
```
To cross-build for different Scala versions:
```scala
sbt +package
```

### Linking
Linking

You can link against this library in your program at the following coordinates:

Scala 2.10
```
groupId: org.uaparser
artifactId: uap-scala_2.10
version: 0.11.0
```
### Usage

Scala 2.11
```
groupId: org.uaparser
artifactId: uap-scala_2.11
version: 0.11.0
```
To use this library in your own project, add the following dependency in `build.sbt`:

Scala 2.12
```
groupId: org.uaparser
artifactId: uap-scala_2.12
version: 0.11.0
libraryDependencies += "org.uaparser" %% "uap-scala" % "0.16.0"
```

Scala 2.13
```
groupId: org.uaparser
artifactId: uap-scala_2.13
version: 0.11.0
```

### Usage

#### Note about these examples

Instantiating Parser.default also instantiates secondary classes and reads in YAML files. This is slow.
If performance is critical or you are handling user agents in real time, be sure not to do this on the
critical path for processing requests.

#### Retrieve data on a user-agent string

```scala
import org.uaparser.scala.Parser

Expand All @@ -79,8 +30,10 @@ val client = Parser.default.parse(ua) // you can also use CachingParser
println(client) // Client(UserAgent(Mobile Safari,Some(5),Some(1),None),OS(iOS,Some(5),Some(1),Some(1),None),Device(iPhone))
```
#### Extract partial data from user-agent string

The time costs of parsing all the data may be high.
To reduce the costs, we can just parse partial data.

```scala
import org.uaparser.scala.Parser

Expand All @@ -96,6 +49,36 @@ println(userAgent) // UserAgent(Mobile Safari,Some(5),Some(1),None)
val device = parser.deviceParser.parse(raw)
println(device) // Device(iPhone,Some(Apple),Some(iPhone))
```

### Development

The code for this repository can be checked out normally. It uses a [git submodule](https://git-scm.com/docs/git-submodule) to include the files needed from [uap-core](https://github.com/ua-parser/uap-core) so care must be taken to make sure the `core` directory is properly checked out and initialized.

Checking out the repo for the first time
```
git clone --recursive https://github.com/ua-parser/uap-scala.git
```
If uap-scala was checked out and core was not properly initialized, the following can be done

```
cd uap-scala
git submodule update --init --recursive
```

#### Build

To build and publish locally for the default Scala (currently 2.13.11):

```scala
sbt publishLocal
```

To cross-build for different Scala versions:

```scala
sbt +publishLocal
```

### Maintainers

* Piotr Adamski ([@mcveat](https://twitter.com/mcveat)) (Author. Based on the java implementation by Steve Jiang [@sjiang](https://twitter.com/sjiang) and using agent data from BrowserScope)
Expand Down

0 comments on commit ad4bd31

Please sign in to comment.