Skip to content

Commit

Permalink
Merge pull request #21 from concretesolutions/vn/2.0
Browse files Browse the repository at this point in the history
Refatora para 2.0
  • Loading branch information
cs-rafael-toledo committed Jan 26, 2018
2 parents 3ee453e + 01ce547 commit 3d40a2b
Show file tree
Hide file tree
Showing 68 changed files with 718 additions and 548 deletions.
54 changes: 37 additions & 17 deletions .travis.yml
@@ -1,28 +1,48 @@
language: android
sudo: required
jdk: oraclejdk8
sudo: required # For faster internet speeds and more memory
before_install:
- mkdir "$ANDROID_HOME/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

android:
components:
- tools
- tools

before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
-rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
-rm -fr $HOME/.gradle/caches/*/plugin-resolution/

cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- $HOME/.android/build-cache
-$HOME/.gradle/caches/
-$HOME/.gradle/wrapper/

before_install:
# Download SDK
- echo yes | sdkmanager "tools" &>/dev/null
- echo yes | sdkmanager "platform-tools" &>/dev/null
- echo yes | sdkmanager "build-tools;26.0.2" &>/dev/null
- echo yes | sdkmanager "platforms;android-26" &>/dev/null
# Download emulator
- echo yes | sdkmanager "platforms;android-19" &>/dev/null
- echo yes | sdkmanager "system-images;android-19;default;armeabi-v7a" &>/dev/null
- echo yes | sdkmanager --licenses &>/dev/null
# Setup emulator
- echo no | avdmanager create avd --force -n test -k "system-images;android-19;default;armeabi-v7a" &>/dev/null
- $ANDROID_HOME/emulator/emulator -avd test -no-audio -no-window & &>/dev/null

before_script:
- ${ANDROID_HOME}tools/bin/sdkmanager --channel=3 "tools" "platform-tools" "build-tools;26.0.1" "platforms;android-26" "extras;google;m2repository"
# Make sure the emulator is available
- android-wait-for-emulator

# Turn off animations
- adb shell settings put global window_animation_scale 0 &
- adb shell settings put global transition_animation_scale 0 &
- adb shell settings put global animator_duration_scale 0 &

# For Multidex issue for devices API < 19
- adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
- adb shell stop installd
- adb shell start installd

# Wake up
- adb shell input keyevent 82 &

script:
- ./gradlew clean assemble check :sample:test
- ./gradlew clean check --stacktrace --info

after_failure: "cat $TRAVIS_BUILD_DIR/sample/build/outputs/lint-results-debug.xml"
5 changes: 5 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog

## 2.0.0
- Alterado o pacote da bilbioteca. Junto a reformulação do nome da própria Concrete (remoção de Solutions)
- Corrige issue #19. Obrigado a @luisfernandezbr pelo fix
- Atualiza sistema de build

## 1.2.0
- Adicionada configuração de `ValorMonetarioWatcher`
- É possível deixar o símbolo de Real
Expand Down
8 changes: 7 additions & 1 deletion README.md
Expand Up @@ -86,7 +86,7 @@ Exemplo de declaração no layout:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_value"
android:inputType="textFilter|number"
android:inputType="number"
android:maxLength="13"
android:text="0,00" />
```
Expand All @@ -100,6 +100,12 @@ Para isso, usamos um `EventoDeValidacao` que possui os seguintes callbacks:
- `void parcialmenteValido(String valorAtual)`: chamado quando o valor ainda não está completo e também não está inválido
- `void totalmenteValido(String valorAtual)`: chamado quando o valor está completo e válido

Um exemplo de implementação:

```java

```

Veja exemplos de implementação no sample.

## Changelog
Expand Down
7 changes: 4 additions & 3 deletions build.gradle
@@ -1,18 +1,19 @@
buildscript {
repositories {
google()
jcenter()
google()
}

dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-beta7'
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
}
}

allprojects {
repositories {
google()
jcenter()
google()
}
}
6 changes: 3 additions & 3 deletions canarinho/build.gradle
Expand Up @@ -6,14 +6,14 @@ ext {
bintrayName = 'canarinho'
bintrayUserOrg = 'concretesolutions'

publishedGroupId = 'br.com.concretesolutions'
publishedGroupId = 'br.com.concrete'
libraryName = 'Android Canarinho'
artifact = 'canarinho'

libraryDescription = 'Utilitários Android para padrões Brasileiros'
siteUrl = 'https://github.com/concretesolutions/canarinho'
gitUrl = 'https://github.com/concretesolutions/canarinho.git'
libraryVersion = '1.3.0-snapshot'
libraryVersion = '2.0.0'

developerId = 'cs-victor-nascimento'
developerName = 'Victor Oliveira Nascimento'
Expand All @@ -25,7 +25,7 @@ ext {

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
buildToolsVersion "26.0.2"

defaultConfig {
minSdkVersion 15
Expand Down
2 changes: 1 addition & 1 deletion canarinho/src/main/AndroidManifest.xml
@@ -1 +1 @@
<manifest package="br.com.concretesolutions.canarinho" />
<manifest package="br.com.concrete.canarinho" />
@@ -1,4 +1,4 @@
package br.com.concretesolutions.canarinho;
package br.com.concrete.canarinho;

import android.util.SparseArray;

Expand Down
@@ -1,4 +1,4 @@
package br.com.concretesolutions.canarinho.formatador;
package br.com.concrete.canarinho.formatador;

import java.util.regex.Pattern;

Expand All @@ -10,48 +10,63 @@ public interface Formatador {

// Formatadores
/**
* Singleton de formatação de CEP
* Singleton de formatação de CEP.
*/
Formatador CEP = new FormatadorBase(Padroes.CEP_FORMATADO, "$1-$2", Padroes.CEP_DESFORMATADO, "$1$2");
Formatador CEP = new FormatadorBase(
Padroes.CEP_FORMATADO,
"$1-$2",
Padroes.CEP_DESFORMATADO,
"$1$2"
);

/**
* Singleton de formatação de CPF
* Singleton de formatação de CPF.
*/
Formatador CPF = new FormatadorBase(Padroes.CPF_FORMATADO, "$1.$2.$3-$4", Padroes.CPF_DESFORMATADO, "$1$2$3$4");
Formatador CPF = new FormatadorBase(
Padroes.CPF_FORMATADO,
"$1.$2.$3-$4",
Padroes.CPF_DESFORMATADO,
"$1$2$3$4"
);

/**
* Singleton de formatação de CNPJ
* Singleton de formatação de CNPJ.
*/
Formatador CNPJ = new FormatadorBase(Padroes.CNPJ_FORMATADO, "$1.$2.$3/$4-$5", Padroes.CNPJ_DESFORMATADO,
"$1$2$3$4$5");
Formatador CNPJ = new FormatadorBase(
Padroes.CNPJ_FORMATADO,
"$1.$2.$3/$4-$5",
Padroes.CNPJ_DESFORMATADO,
"$1$2$3$4$5"
);

/**
* Singleton de formatação de CPF e CNPJ
* Singleton de formatação de CPF e CNPJ.
*/
Formatador CPF_CNPJ = FormatadorCPFCNPJ.getInstance();

/**
* Singleton de formatação de valores monetários
* Singleton de formatação de valores monetários.
*/
FormatadorValor VALOR = FormatadorValor.getInstance(false);

/**
* Singleton de formatação de valores monetários com símbolo do Real
* Singleton de formatação de valores monetários com símbolo do Real.
*/
FormatadorValor VALOR_COM_SIMBOLO = FormatadorValor.getInstance(true);

/**
* Singleton de formatação de boletos bancários
* Singleton de formatação de boletos bancários.
*/
Formatador BOLETO = FormatadorBoleto.getInstance();

/**
* Singleton de formatação de telefones (DDD) número
* Singleton de formatação de telefones (DDD) número.
*/
Formatador TELEFONE = FormatadorTelefone.getInstance();

/**
* Singleton de formatação de linha digitável. Transforma números do código de barras em linha digitável.
* Singleton de formatação de linha digitável. Transforma números do código de barras em linha
* digitável.
*/
Formatador LINHA_DIGITAVEL = FormatadorLinhaDigitavel.getInstance();

Expand Down Expand Up @@ -88,24 +103,32 @@ public interface Formatador {
boolean podeSerFormatado(String value);

/**
* Classe para guardar os padrões de experssões regulares usados no framework
* Classe para guardar os padrões de experssões regulares usados no framework.
*/
abstract class Padroes {
// Patterns
public static final Pattern CEP_FORMATADO = Pattern
.compile("(\\d{5})-(\\d{3})");
public static final Pattern CEP_DESFORMATADO = Pattern
.compile("(\\d{5})(\\d{3})");
public static final Pattern CNPJ_FORMATADO = Pattern
.compile("(\\d{2})[.](\\d{3})[.](\\d{3})/(\\d{4})-(\\d{2})");
public static final Pattern CNPJ_DESFORMATADO = Pattern
.compile("(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})");
public static final Pattern CPF_FORMATADO = Pattern
.compile("(\\d{3})[.](\\d{3})[.](\\d{3})-(\\d{2})");
public static final Pattern CPF_DESFORMATADO = Pattern
.compile("(\\d{3})(\\d{3})(\\d{3})(\\d{2})");
public static final Pattern PADRAO_SOMENTE_NUMEROS = Pattern
.compile("[^0-9]");

public static final Pattern PADRAO_SOMENTE_NUMEROS = Pattern.compile("[^0-9]");
public static final Pattern CEP_FORMATADO = Pattern.compile("(\\d{5})-(\\d{3})");
public static final Pattern CEP_DESFORMATADO = Pattern.compile("(\\d{5})(\\d{3})");

public static final Pattern CNPJ_FORMATADO = Pattern.compile(
"(\\d{2})[.](\\d{3})[.](\\d{3})/(\\d{4})-(\\d{2})"
);

public static final Pattern CNPJ_DESFORMATADO = Pattern.compile(
"(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})"
);

public static final Pattern CPF_FORMATADO = Pattern.compile(
"(\\d{3})[.](\\d{3})[.](\\d{3})-(\\d{2})"
);

public static final Pattern CPF_DESFORMATADO = Pattern.compile(
"(\\d{3})(\\d{3})(\\d{3})(\\d{2})"
);

private Padroes() {
}
}

}
@@ -1,9 +1,12 @@
package br.com.concretesolutions.canarinho.formatador;
package br.com.concrete.canarinho.formatador;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/** */
/**
* Classe utilitária para a implementação de todos os formatadores que precisam apenas da aplicação
* de {@link Pattern}s.
*/
final class FormatadorBase implements Formatador {

private final Pattern formatted;
Expand All @@ -15,13 +18,19 @@ final class FormatadorBase implements Formatador {
private final String unformattedReplacement;

/**
* TODO adicionar JavaDoc
* @param formatted descrever conteúdo
* @param formattedReplacement descrever conteúdo
* @param unformatted descrever conteúdo
* @param unformattedReplacement descrever conteúdo
* Constrói um formatador que recebe a configuração de formatação e substituição.
*
* @param formatted Pattern de regex para formatar o conteúdo
* @param formattedReplacement String com as posições de substituição dos grupos encontrados por regex
* @param unformatted Pattern de regex para DESformatar o conteúdo
* @param unformattedReplacement String com as posições de substituição dos grupos encontrados por regex
*/
FormatadorBase(Pattern formatted, String formattedReplacement, Pattern unformatted, String unformattedReplacement) {
FormatadorBase(
Pattern formatted,
String formattedReplacement,
Pattern unformatted,
String unformattedReplacement) {

this.formatted = formatted;
this.formattedReplacement = formattedReplacement;
this.unformatted = unformatted;
Expand Down Expand Up @@ -69,11 +78,7 @@ public final boolean estaFormatado(String value) {

@Override
public final boolean podeSerFormatado(String value) {
if (value == null) {
return false;
}

return unformatted.matcher(value).matches();
return value != null && unformatted.matcher(value).matches();
}

private String matchAndReplace(Matcher matcher, String replacement) {
Expand Down

0 comments on commit 3d40a2b

Please sign in to comment.