Skip to content

Commit 3100de5

Browse files
authored
Update README mini-wiki
1 parent 563f7b2 commit 3100de5

File tree

1 file changed

+44
-60
lines changed

1 file changed

+44
-60
lines changed

README.md

Lines changed: 44 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
[releaseImg]: https://img.shields.io/github/v/release/yusshu/lang-lib.svg?label=github%20release
2-
[release]: https://github.com/yusshu/lang-lib/releases/latest
1+
[releaseImg]: https://img.shields.io/github/v/release/yusshu/nmessge.svg?label=github%20release
2+
[release]: https://github.com/yusshu/nmessage/releases/latest
33

4-
# JLL (Java Language Library) [![releaseImg]][release] [![Build Status](https://travis-ci.com/yusshu/lang-lib.svg?branch=master)](https://travis-ci.com/yusshu/lang-lib)
4+
# NMessage [![releaseImg]][release] [![Build Status](https://travis-ci.com/yusshu/nmessage.svg?branch=master)](https://travis-ci.com/yusshu/nmessage)
55

66
A simple and a bit abstract library to handle messages with multilanguage support.
77
I have seen many things in languages ​​that I do not understand, to avoid this, I bring here a library for multilanguage and easy to obtain messages from configuration files or from any other place
88

99
## Usage
1010

11-
First, build a `MessageProvider` with a pretty builder.
11+
First, build a `MessageHandler` with a pretty builder.
1212
Assuming that `Thing` is the receiver of the messages, who also has some properties and its language
1313
| | Specification | Implementation |
1414
|---------------------------|-----------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
@@ -31,21 +31,21 @@ MessageRepository repository = MessageRepository.builder()
3131
)
3232
.setNodeFileLoader(nodeFileLoader)
3333
.setFileFormat("messages_%lang%.properties")
34+
.setDefaultLanguage("en")
3435
.build();
3536

36-
MessageProvider<Thing> messageProvider = MessageProvider.<Thing>builder()
37+
MessageHandler<Thing> messageProvider = MessageHandler.builder(Thing.class)
3738
.setRepository(repository)
38-
.setDefaultLanguage("en")
39-
.build();
39+
.build();
4040
```
4141
NodeFileLoader implementation: (for Bukkit) [YamlFileLoader](https://github.com/yusshu/lang-lib/blob/master/bukkit/src/main/java/me/yushust/message/format/bukkit/yaml/YamlFileLoader.java), and NodeFileWrapper: [YamlConfigurationWrapper](https://github.com/yusshu/lang-lib/blob/master/bukkit/src/main/java/me/yushust/message/format/bukkit/yaml/YamlConfigurationWrapper.java)
4242
NodeFileLoader implementation for Properties: (Built in) [PropertiesFileLoader](https://github.com/yusshu/lang-lib/blob/master/core/src/main/java/me/yushust/message/core/holder/defaults/PropertiesFileLoader.java), and NodeFileWrapper: [PropertiesNodeFile](https://github.com/yusshu/lang-lib/blob/master/core/src/main/java/me/yushust/message/core/holder/defaults/PropertiesNodeFile.java)
4343
## Getting messages
4444

45-
There are **two ways** to get messages: using the propertyHolder and using the language.
45+
There are **two ways** to get messages: using the entity and using the language.
4646
Using the language doesn't call `MessageInterceptor`s nor `PlaceholderProvider`s.
4747

48-
Using the property holder:
48+
Using the entity:
4949
```java
5050
Thing thing = ...;
5151
String message = messageProvider.getMessage(thing, "message.path");
@@ -63,12 +63,11 @@ Implementing `LanguageProvider` is **very simple**, you just have to implement a
6363
```java
6464
public class ThingLanguageProvider implements LanguageProvider<Thing> {
6565

66-
@Override
67-
@Nullable
68-
public String getLanguage(Thing thing) {
69-
return thing.getLanguage();
70-
}
71-
66+
@Override
67+
@Nullable
68+
public String getLanguage(Thing thing) {
69+
return thing.getLanguage();
70+
}
7271
}
7372
```
7473
Using lambda method references (Java 8+):
@@ -77,10 +76,10 @@ LanguageProvider<Thing> thingLanguageProvider = Thing::getLanguage;
7776
```
7877
Registering your `LanguageProvider`:
7978
```java
80-
MessageProvider<Thing> messageProvider = MessageProviderBuilder.create()
81-
.setRepository(repository)
82-
.setLanguageProvider(new ThingLanguageProvider())
83-
.build();
79+
MessageHandler<Thing> messageProvider = MessageHandler.builder()
80+
.setRepository(repository)
81+
.setLanguageProvider(new ThingLanguageProvider())
82+
.build();
8483
```
8584
## Intercepting messages
8685

@@ -90,42 +89,34 @@ Intercepting messages is as easy as modifying a String, we just implement `Messa
9089
**Examples:**
9190
A name placeholder provider
9291
```java
92+
@ProviderIdentifier("thing")
9393
public class ThingPlaceholderReplacer implements PlaceholderProvider<Thing> {
94-
95-
@Override
96-
public String[] getPlaceholders() {
97-
return new String[] {"name"};
98-
}
99-
100-
@Override
101-
public String replace(InterceptContext<Thing> context, String placeholder) {
102-
return context.getEntity().getName();
103-
}
104-
94+
@Override
95+
public String replace(MessageRepository repository, Thing entity, String placeholder) {
96+
return entity.getName();
97+
}
10598
}
10699
```
107100
Registering the `PlaceholderProvider`:
108101
```java
109-
MessageProvider<Thing> messageProvider = MessageProviderBuilder.create()
110-
.setRepository(repository);
111-
.addProvider(new ThingPlaceholderProvider())
112-
.build();
102+
MessageRepository<Thing> messageProvider = MessageRepository.builder()
103+
.setRepository(repository);
104+
.addProvider(new ThingPlaceholderProvider())
105+
.build();
113106
```
114107

115108
## Sending messages with MessageConsumer
116109

117-
You can use `MessageProvider` to **send messages**, but this only works if you have previously specified a `MessageConsumer`
110+
You can use `MessageHandler` to **send messages**, but this only works if you have previously specified a `MessageConsumer`
118111

119112
**Implementing MessageConsumer:**
120113
It simply takes care of sending the already formatted message.
121114
```java
122115
public class ThingMessageConsumer implements MessageConsumer<Thing> {
123-
124-
@Override
125-
public void sendMessage(Thing receiver, String message) {
126-
receiver.sendMessage(message);
127-
}
128-
116+
@Override
117+
public void sendMessage(Thing receiver, String message) {
118+
receiver.sendMessage(message);
119+
}
129120
}
130121
```
131122
Or using lambda method references (Java 8+)
@@ -134,10 +125,10 @@ MessageConsumer<Thing> messageConsumer = Thing::sendMessage;
134125
```
135126
Registering your MessageConsumer:
136127
```java
137-
MessageProvider<Thing> messageProvider = MessageProviderBuilder.create()
138-
.setRepository(repository)
139-
.setMessageConsumer(new ThingMessageConsumer())
140-
.build();
128+
MessageHandler<Thing> messageProvider = MessageHandler.builder()
129+
.setRepository(repository)
130+
.setMessageConsumer(new ThingMessageConsumer())
131+
.build();
141132
```
142133

143134
**Sending the message**
@@ -151,40 +142,33 @@ Or
151142
List<Thing> things = ...; // it can be any iterable (Collection, etc)
152143
messageProvider.sendMessage(things, "message.path");
153144
```
154-
And using a just-in-time interceptor:
155-
```java
156-
List<Thing> things = ...;
157-
messageProvider.sendMessage(things, "message.path", message -> {
158-
return message.replace("{{things}}", String.valueOf(things.size()));
159-
});
160-
```
161145
## Implementing a NodeFile
162146
A `NodeFile` will be a file already loaded from where the messages will be obtained.
163147
...
164148
## Installation
165149
Maven repository
166150
```xml
167151
<repository>
168-
<id>unnamed-releases</id>
169-
<url>https://repo.unnamed.team/repository/unnamed-releases</url>
152+
<id>unnamed-releases</id>
153+
<url>https://repo.unnamed.team/repository/unnamed-releases</url>
170154
</repository>
171155
```
172156
Maven dependency
173157
```xml
174158
<dependency>
175-
<groupId>me.yushust.message</groupId>
176-
<artifactId>core</artifactId>
177-
<version>VERSION</version>
159+
<groupId>me.yushust.message</groupId>
160+
<artifactId>message-dispatch-core</artifactId>
161+
<version>VERSION</version>
178162
</dependency>
179163
```
180164

181165
Bukkit adapters maven dependency
182166
(Adds support for YML using Bukkit's `YamlConfiguration`)
183167
```xml
184168
<dependency>
185-
<groupId>me.yushust.message</groupId>
186-
<artifactId>bukkit-formatters</artifactId>
187-
<version>VERSION</version>
169+
<groupId>me.yushust.message</groupId>
170+
<artifactId>bukkit-message-dispatch</artifactId>
171+
<version>VERSION</version>
188172
</dependency>
189173
```
190174
> "Yes."

0 commit comments

Comments
 (0)